齣版者的話
譯者序
前言
第1章 入門 1
1.1 hello,world 1
1.2 命令行參數 3
1.3 找齣重復行 6
1.4 GIF動畫 10
1.5 獲取一個URL 12
1.6 並發獲取多個URL 13
1.7 一個Web服務器 14
1.8 其他內容 17
第2章 程序結構 20
2.1 名稱 20
2.2 聲明 21
2.3 變量 22
2.3.1 短變量聲明 22
2.3.2 指針 23
2.3.3 new函數 25
2.3.4 變量的生命周期 26
2.4 賦值 27
2.4.1 多重賦值 27
2.4.2 可賦值性 28
2.5 類型聲明 29
2.6 包和文件 30
2.6.1 導入 31
2.6.2 包初始化 33
2.7 作用域 34
第3章 基本數據 38
3.1 整數 38
3.2 浮點數 42
3.3 復數 45
3.4 布爾值 47
3.5 字符串 47
3.5.1 字符串字麵量 49
3.5.2 Unicode 49
3.5.3 UTF-8 50
3.5.4 字符串和字節slice 53
3.5.5 字符串和數字的相互轉換 56
3.6 常量 56
3.6.1 常量生成器iota 57
3.6.2 無類型常量 59
第4章 復閤數據類型 61
4.1 數組 61
4.2 slice 63
4.2.1 append函數 66
4.2.2 slice就地修改 69
4.3 map 71
4.4 結構體 76
4.4.1 結構體字麵量 78
4.4.2 結構體比較 80
4.4.3 結構體嵌套和匿名成員 80
4.5 JSON 82
4.6 文本和HTML模闆 87
第5章 函數 92
5.1 函數聲明 92
5.2 遞歸 93
5.3 多返迴值 96
5.4 錯誤 98
5.4.1 錯誤處理策略 99
5.4.2 文件結束標識 101
5.5 函數變量 102
5.6 匿名函數 104
5.7 變長函數 110
5.8 延遲函數調用 111
5.9 宕機 115
5.10 恢復 118
第6章 方法 120
6.1 方法聲明 120
6.2 指針接收者的方法 122
6.3 通過結構體內嵌組成類型 124
6.4 方法變量與錶達式 127
6.5 示例:位嚮量 128
6.6 封裝 130
第7章 接口 133
7.1 接口即約定 133
7.2 接口類型 135
7.3 實現接口 136
7.4 使用flag.Value來解析參數 139
7.5 接口值 141
7.6 使用sort.Interface來排序 144
7.7 http.Handler接口 148
7.8 error接口 152
7.9 示例:錶達式求值器 154
7.10 類型斷言 160
7.11 使用類型斷言來識彆錯誤 161
7.12 通過接口類型斷言來查詢特性 162
7.13 類型分支 164
7.14 示例:基於標記的XML解析 166
7.15 一些建議 168
第8章 goroutine和通道 170
8.1 goroutine 170
8.2 示例:並發時鍾服務器 171
8.3 示例:並發迴聲服務器 174
8.4 通道 176
8.4.1 無緩衝通道 177
8.4.2 管道 178
8.4.3 單嚮通道類型 180
8.4.4 緩衝通道 181
8.5 並行循環 183
8.6 示例:並發的Web爬蟲 187
8.7 使用select多路復用 190
8.8 示例:並發目錄遍曆 192
8.9 取消 195
8.10 示例:聊天服務器 198
第9章 使用共享變量實現並發 201
9.1 競態 201
9.2 互斥鎖:sync.Mutex 205
9.3 讀寫互斥鎖:sync.RWMutex 208
9.4 內存同步 208
9.5 延遲初始化:sync.Once 210
9.6 競態檢測器 212
9.7 示例:並發非阻塞緩存 212
9.8 goroutine與綫程 218
9.8.1 可增長的棧 219
9.8.2 goroutine調度 219
9.8.3 GOMAXPROCS 219
9.8.4 goroutine沒有標識 220
第10章 包和go工具 221
10.1 引言 221
10.2 導入路徑 221
10.3 包的聲明 222
10.4 導入聲明 223
10.5 空導入 223
10.6 包及其命名 225
10.7 go工具 226
10.7.1 工作空間的組織 227
10.7.2 包的下載 228
10.7.3 包的構建 229
10.7.4 包的文檔化 231
10.7.5 內部包 232
10.7.6 包的查詢 233
第11章 測試 235
11.1 go test工具 235
11.2 Test函數 236
11.2.1 隨機測試 239
11.2.2 測試命令 240
11.2.3 白盒測試 242
11.2.4 外部測試包 245
11.2.5 編寫有效測試 246
11.2.6 避免脆弱的測試 247
11.3 覆蓋率 248
11.4 Benchmark函數 250
11.5 性能剖析 252
11.6 Example函數 254
第12章 反射 256
12.1 為什麼使用反射 256
12.2 reflect.Type和reflect.Value 257
12.3 Display:一個遞歸的值顯示器 259
12.4 示例:編碼S錶達式 263
12.5 使用reflect.Value來設置值 266
12.6 示例:解碼S錶達式 268
12.7 訪問結構體字段標簽 271
12.8 顯示類型的方法 273
12.9 注意事項 274
第13章 低級編程 276
13.1 unsafe.Sizeof、Alignof 和Offsetof 276
13.2 unsafe.Pointer 278
13.3 示例:深度相等 280
13.4 使用cgo調用C代碼 282
13.5 關於安全的注意事項 286
· · · · · · (
收起)
評分
☆☆☆☆☆
第一章的幾個示例首先能對golang有一個overview的瞭解, 然後整本書讀下來對golang的許多細節與特性有瞭相當的瞭解. 總體感覺非常好, 深入瞭解golang的話非常值得一讀.
評分
☆☆☆☆☆
囫圇吞棗,還得再讀
評分
☆☆☆☆☆
不單單是講go語言本身,對並發和web也講的很好。
評分
☆☆☆☆☆
入職服務器開發讀的第一本書,例子講解都很不錯,剩下的就是多加理解和練習!
評分
☆☆☆☆☆
翻譯一坨屎,不要看這本,去看原版
評分
☆☆☆☆☆
去年就打算学习Go了,没坚持下来,今年打算再次拾起,并仔细做好笔记,笔记都放在[网页]上。我学习Go的一大动机是为了做后端开发。Go与Python相似,都对代码格式有着强烈的要求,这就强迫所有程序员在同一种风格下写作,对于代码可读性和团队协作来说,有很大好处。 Go的创始人...
評分
☆☆☆☆☆
看这本书的时候,就感觉这本书代码例子相当好,基本上很多概念,文字看不懂的话,多读几遍代码,很容易就能理解了(特别是讲并发的那几章),还有对同一个问题的变化写法。 go语言本身语法在编程语言里算很简单了,即没有动态语言的各种神奇的元编程trick,也没有什么函数式编程...
評分
☆☆☆☆☆
看这本书的时候,就感觉这本书代码例子相当好,基本上很多概念,文字看不懂的话,多读几遍代码,很容易就能理解了(特别是讲并发的那几章),还有对同一个问题的变化写法。 go语言本身语法在编程语言里算很简单了,即没有动态语言的各种神奇的元编程trick,也没有什么函数式编程...
評分
☆☆☆☆☆
断断续续花了两三个月终于看完了《The Go Programming Language》,因为是英文原版,所以多花了点时间。整个书的结构和“XXX Programming Language”一样,从基本语法讲到高级特性。Go官网也提供了“A Tour of Go”, "Effective Go"等相对快速的教学文档(一般花上几小时即可完...
評分
☆☆☆☆☆
Go语言被誉为21世纪的C语言,如果你深入学习和使用这种语言之后也会表达认同。 所有的编程语言都反映了语言设计者对编程哲学的反思,通常包括之前的语言所暴露的一些不足地方的改进。Go项目是在Google维护超级复杂的几个项目遇到问题、反思问题下的产物。对软件复杂性有着更深...