●入門
第1章各就各位,預備,Go!3
1.1什麼是Go4
1.2GoPlayground6
1.3包和函數7
1.4專享允許的大括號放置風格8
1.5小結9
實驗:playground.go10
命令式編程
第2章被美化的計算器13
2.1執行計算13
2.2格式化輸出15
2.3常量和變量16
2.4走捷徑18
2.4.1一次聲明多個變量18
2.4.2增量並賦值操作符18
2.5數字遊戲19
2.6小結20
實驗:malacandra.go21
第3章循環和分支22
3.1真或假23
3.2比較24
3.3使用if實現分支判斷25
3.4邏輯運算符26
3.5使用switch實現分支判斷28
3.6使用循環實現重復執行30
3.7小結31
實驗:guess.go32
第4章變量作用域33
4.1審視作用域34
4.2簡短聲明35
4.3作用域的範圍37
4.4小結39
實驗:random-dates.go39
第實驗:前往火星的航行票40
類型
第6章實數45
6.1聲明浮點類型變量46
6.1.1單精度浮點數47
6.1.2零值47
6.2打印浮點類型48
6.3浮點準確性49
6.4比較浮點數51
6.5小結51
實驗:piggy.go52
第7章整數53
7.1聲明整數類型變量54
7.1.1為不同場合而設的整數類型54
7.1.2了解類型56
7.2為8位顏色使用uint8類型56
7.3整數回繞58
7.3.1聚焦二進制位58
7.3.2避免時間回繞60
7.4小結61
實驗:piggy.go62
第8章大數63
8.1擊中天花板63
8.2big包65
8.3大小非同尋常的常量66
8.4小結68
實驗:cains.go68
第9章多語言文本69
9.1聲明字符串變量70
9.2字符、代碼點、符文和字節71
9.3拉弦73
9.4使用凱撒加密法處理字符73
9.5將字符串解碼為符文76
9.6小結77
實驗:caesar.go78
實驗:international.go78
第10章類型轉換79
10.1類型不能混合使用79
10.2數字類型轉換81
10.3類型轉換的危險之處82
10.4字符串轉換83
10.5轉換布爾值85
10.6小結86
實驗:input.go86
第1實驗:維吉尼亞加密法87
實驗:decipher.go88
實驗:cipher.go89
構建塊
第12章函數93
12.1函數聲明94
12.2編寫函數97
12.3小結99
實驗:functions.go99
第13章方法100
13.1聲明新類型101
13.2引入自定義類型102
13.3通過方法為類型添加行為103
13.4小結105
實驗:methods.go106
第14章一等函數107
14.1將函數賦值給變量108
14.2將函數傳遞給其他函數109
14.3聲明函數類型110
14.4閉包和匿名函數111
14.5小結113
實驗:calibrate.go114
第1實驗:溫度表115
收集器
第16章勞苦功高的數組119
16.1聲明數組並素119
16.2小心越界121
16.3使用復合字面量初始化數組121
16.4迭代數組122
16.5數組被復制123
16.6由數組組成的數組125
16.7小結125
實驗:chess.go126
第17章切片:指向數組的窗口127
17.1切分數組128
17.2切片的復合字面量130
17.3切片的威力130
17.4帶有方法的切片132
17.5小結133
實驗:terraform.go133
第18章更大的切片134
18.1append函數134
18.2長度和容量135
18.3詳解append函數136
18.4三索引切分操作137
18.5使用make函數對切片實行預分配138
18.6聲明可變參數函數139
18.7小結140
實驗:capacity.go140
第19章 的映射141
19.1聲明映射142
19.2映射不會被復制143
19.3使用make函數對映射實行預分配144
19.4使用映射進行計數145
19.5使用映射和切片實現數據分組146
19.6將映射用作集合147
19.7小結148
實驗:words.go148
第2實驗:切片人生150
20.1開天闢地150
20.1.1觀察世界151
20.1.2激活細胞151
20.2適者生存152
20.2.1存活還是死亡152
20.2.2統計鄰近細胞152
20.2.3遊戲邏輯153
20.3平行世界153
狀態與行為
第21章結構157
21.1聲明結構157
21.2通過類型復用結構159
21.3通過復合字面量初始化結構159
21.4結構被復制161
21.5由結構組成的切片161
21.6將結構編碼為JSON162
21.7使用結構標簽定制JSON164
21.8小結165
實驗:landing.go165
第22章Go沒有類166
22.1將方法綁定到結構166
22.2構造函數168
22.3類的替代品169
22.4小結171
實驗:landing.go171
實驗:distance.go171
第23章組合與轉發173
23.1合並結構174
23.2實現自動的轉發方法176
23.3命名衝突178
23.4小結180
實驗:gps.go180
第24章接口181
24.1接口類型182
24.2探索接口185
24.3滿足接口187
24.4小結189
實驗:marshal.go189
第2實驗:火星上的動物避難所190
深入Go語言
第26章關於指針的二三事195
26.1&和*196
26.2指針的作用就是指向199
26.2.1指向結構的指針201
26.2.2指向數組的指針202
26.3實現修改203
26.3.1將指針用作形參203
26.3.2指針接收者204
26.3.3內部指針206
26.3.4修改數組207
26.4隱式指針208
26.4.1映射也是指針208
26.4.2切片指向數組208
26.5指針和接口209
26.6明智地使用指針210
26.7小結211
實驗:turtle.go211
第27章關於nil的紛紛擾擾212
27.1通向驚恐的nil指針213
27.2保護你的方法214
27.3nil函數值216
27.4nil切片217
27.5nil映射218
27.6nil接口218
27.7nil之外的另一個選擇219
27.8小結220
實驗:knights.go221
第28章孰能無過222
28.1處理錯誤223
28.2優雅的錯誤處理224
28.2.1文件寫入225
28.2.2關鍵字defer227
28.2.3創造性的錯誤處理228
28.3新的錯誤229
28.3.1按需返回錯誤231
28.3.2自定義錯誤類型232
28.4不要驚恐235
28.4.1其他語言中的異常235
28.4.2如何引發驚恐236
28.4.3處理驚恐237
28.5小結237
實驗:url.go238
第2實驗:數獨規則239
並發編程
第30章goroutine和並發243
30.1啟動goroutine244
30.2不止一個goroutine245
30.3通道247
30.4使用select處理多個通道249
30.5阻塞和死鎖251
30.6地鼠裝配線252
30.7小結256
實驗:remove-identical.go256
實驗:split-words.go256
第31章並發狀態257
31.1互斥鎖258
31.2長時間運行的工作進程262
31.3小結267
實驗:positionworker.go268
實驗:rover.go268
第3實驗:尋找火星生命269
32.1可供活動的網格269
32.2報告發現270
結語:何去何從273
《Go語言趣學指南》是一本面向Go語言初學者的書,循序漸進地介紹了使用Go語言所必需的知識,展示了非常多生動有趣的例子,並通過提供大量練習來加深讀者對書中所述內容的理解。本書共分,分別介紹變量、常量、分支和循環等基礎語句,整數、浮點數和字符串等常用類型,類型、函數和方法,數組、切片和映射,結構和接口,指針、nil和錯誤處理方法,並發和狀態保護,並且都包含相應的章測試。
《Go語言趣學指南》適合對初學Go語言有不同需求的程序員閱讀。無論是剛開始學習Go語言的新手,還是想要回顧Go語言基礎知識的Go語言使用者,隻要是想用Go做開發,無論是開發小型腳本還是大型程序,《Go語言趣學指南》都會非常有幫助。