第1章 綜述 1
1.1 Hello,World 1
1.2 命令行參數 4
1.3 查找重復行 8
1.4 GIF動畫 13
1.5 獲取一個URL 15
1.6 並發獲取多個URL 17
1.7 實現一個Web服務器 19
1.8 雜項 23
第2章 程序結構 27
2.1 名字 27
2.2 聲明 28
2.3 變量 30
2.4 賦值 36
2.5 類型聲明 39
2.6 包和文件 41
2.7 作用域 45
第3章 基本數據類型 51
3.1 整數 51
3.2 浮點數 56
3.3 復數 61
3.4 布爾量 63
3.5 字符串 64
3.6 常量 75
第4章 復閤類型 81
4.1 數組 81
4.2 切片 84
4.3 鍵值對 93
4.4 結構體 99
4.5 JSON 107
4.6 文本和HTML模闆 113
第5章 函數 119
5.1 函數聲明 119
5.2 遞歸 121
5.3 多返迴值 124
5.4 錯誤 127
5.5 作為值的函數 132
5.6 匿名函數 135
5.7 變參函數 142
5.8 延後函數調用 143
5.9 崩潰 148
5.10 恢復 151
第6章 方法 155
6.1 方法聲明 155
6.2 帶有指針接收器的方法 158
6.3 包含嵌入結構體的復閤類型 161
6.4 作為值和錶達式的方法 164
6.5 示例:位嚮量類型 165
6.6 封裝 168
第7章 接口 171
7.1 作為規約的接口 171
7.2 接口類型 174
7.3 接口約定的達成 175
7.4 使用flag.Value進行標誌位分析 179
7.5 作為值的接口 181
7.6 使用sort.Interface進行排序 186
7.7 http.Handler接口 191
7.8 錯誤接口 196
7.9 示例:錶達式評估器 197
7.10 類型斷言 205
7.11 使用類型斷言分辨錯誤 206
7.12 使用接口類型斷言查詢行為 208
7.13 按類型的程序分支 210
7.14 示例:基於標記符號的XML解碼 213
7.15 幾句建議 216
第8章 goroutine和信道 217
8.1 goroutine 217
8.2 示例:並發時鍾服務器 219
8.3 示例:並發迴聲服務器 222
8.4 信道 225
8.5 並行循環 234
8.6 示例:並發Web爬蟲 239
8.7 使用select實現多工 244
8.8 示例:並發目錄遍曆 247
8.9 取消執行 251
8.10 示例:聊天服務器 253
第9章 使用共享變量實現並發 257
9.1 競險 257
9.2 互斥量:sync.Mutex 262
9.3 讀寫互斥量:sync.RWMutex 266
9.4 內存同步 267
9.5 緩式初始化:sync.Once 268
9.6 競險檢測器 271
9.7 示例:並發無阻塞式高速緩存 272
9.8 goroutine和綫程 280
第10章 包和go工具 283
10.1 概述 283
10.2 導入路徑 284
10.3 包聲明 285
10.4 導入聲明 285
10.5 空導入 286
10.6 包和命名 289
10.7 go工具 290
第11章 測試 301
11.1 go test工具 302
11.2 測試函數 302
11.3 覆蓋率 318
11.4 性能基準函數 321
11.5 性能剖析 323
11.6 示例函數 326
第12章 反射 329
12.1 為什麼會引入反射概念 329
12.2 reflect.Type和reflect.Value 330
12.3 遞歸值輸齣Display 333
12.4 示例:對S-錶達式編碼 338
12.5 使用reflect.Value給變量設置值 341
12.6 示例:對S-錶達式解碼 344
12.7 訪問結構體域標簽 348
12.8 列齣類型的方法 351
12.9 幾句忠告 352
第13章 低階程序設計 353
13.1 unsafe.Sizeof、Alignof和Offsetof 354
13.2 unsafe.Pointer 356
13.3 示例:深等價 358
13.4 使用cgo調用C代碼 361
13.5 再來幾句忠告 366
· · · · · · (
收起)