Go 具有簡捷明了的語法、標(biāo)準(zhǔn)庫,生態(tài)系統(tǒng)豐富、支持并發(fā)編程和跨平臺編譯,適合開發(fā)大型應(yīng)用。本書基于Go 1.20版本編寫,對Go語言的語法和使用方法進行了詳盡的介紹,包括基礎(chǔ)語法、數(shù)組、切片、映射、函數(shù)、類型、包與依賴管理、接口、反射、并發(fā)編程、泛型、測試、常用標(biāo)準(zhǔn)庫和第三方庫的基本原理和使用方法,并通過最佳實踐案例詳細(xì)講解使用過程中遇到的常見問題和解決方法,以期幫助讀者讀者更好地理解Go語言的語法特性和應(yīng)用技巧。 本書適合有一定編程基礎(chǔ)的Go語言初學(xué)者閱讀。
李文周,十余年互聯(lián)網(wǎng)行業(yè)從業(yè)經(jīng)驗,曾任職于獵豹移動、搜狗、百度等公司,國內(nèi)較早一批Go語言愛好者,Go語言社區(qū)知名博主。在個人博客和B站發(fā)布了大量Go語言學(xué)習(xí)教程,幫助眾多讀者學(xué)習(xí)和了解Go語言。
第1章 概述1
1.1 Go語言簡介1
1.2 下載與安裝3
1.3 編輯器6
1.4 第一個程序9
第2章 基礎(chǔ)語法13
2.1 標(biāo)識符13
2.2 變量14
2.3 常量17
2.4 基本數(shù)據(jù)類型19
2.5 指針25
2.6 運算符27
2.7 流程控制語句29
第3章 數(shù)組、切片和映射38
3.1 數(shù)組38
3.2 切片42
3.3 映射52
第4章 函數(shù)60
4.1 函數(shù)聲明60
4.2 函數(shù)的調(diào)用61
4.3 參數(shù)62
4.4 返回值63
4.5 變量作用域64
4.6 函數(shù)類型與變量66
4.7 匿名函數(shù)和閉包68
4.8 內(nèi)置函數(shù)71
第5章 類型84
5.1 類型聲明84
5.2 結(jié)構(gòu)體86
5.3 方法和接收者98
5.4 結(jié)構(gòu)體與JSON序列化104
第6章 包與依賴管理110
6.1 包110
6.2 依賴管理114
第7章 接口124
7.1 接口類型124
7.2 值接收者和指針接收者130
7.3 類型與接口的關(guān)系131
7.4 空接口134
7.5 接口值135
第8章 反射140
8.1 反射簡介140
8.2 reflect包141
8.3 reflect.Value結(jié)構(gòu)體147
8.4 結(jié)構(gòu)體反射148
8.5 反射三大定律152
第9章 并發(fā)編程154
9.1 并發(fā)編程簡介154
9.2 goroutine155
9.3 通道161
9.4 select多路復(fù)用168
9.5 通道誤用示例169
9.6 并發(fā)安全和鎖171
9.7 原子操作179
第10章 泛型184
10.1 泛型簡介184
10.2 泛型語法185
10.3 類型參數(shù)的適用場景193
第11章 測試198
11.1 單元測試198
11.2 斷言工具208
11.3 性能測試209
11.4 setup和teardown214
11.5 示例函數(shù)217
11.6 網(wǎng)絡(luò)測試218
11.7 數(shù)據(jù)庫測試223
11.8 mock接口測試228
11.9 更人性化的單元測試236
11.10 編寫可測試的代碼242
第12章 常用標(biāo)準(zhǔn)庫249
12.1 fmt包249
12.2 flag包261
12.3 time包264
12.4 log包270
12.5 strconv包274
12.6 net/http包278
12.7 Context包283
第13章 常用第三方庫295
13.1 gin框架295
13.2 MySQL309
13.3 sqlx320
13.4 Redis328
13.5 MongoDB338
13.6 etcd346
13.7 Zap日志庫354
13.8 Viper370
13.9 singleflight包379
13.10 Wire383
13.11 gRPC393
第14章 Go語言最佳實踐427
14.1 Error接口和錯誤處理427
14.2 在select中實現(xiàn)優(yōu)先級435
14.3 JSON序列化技巧438
14.4 結(jié)構(gòu)體與map的格式轉(zhuǎn)換451
14.5 單例模式455
14.6 函數(shù)選項模式459
14.7 部署Go語言項目463