深入理解Go語言——規範、原理與實踐
袁曉輝
商品描述
作者簡介
目錄大綱
目錄
本書源碼
第1章Go語言簡介
1.1Go語言的發布策略
1.2Go語言的兼容性保證
1.3Go語言規範
1.3.1花括號
1.3.2min和max
1.4Go程序的代碼組織形式
1.5交叉編譯
第2章標識符與關鍵字
2.1標識符
2.1.1空白標識符
2.1.2預定義標識符
2.1.3限定標識符
2.2關鍵字
2.3標識符的作用域
2.4標識符的導出性
第3章常量與變量
3.1常量字面量
3.1.1數值字面量
3.1.2字符字面量
3.1.3字符串字面量
3.2常量
3.3變量
第4章表達式與語句
4.1表達式
4.1.1組合字面量
4.1.2方法表達式
4.1.3方法值表達式
4.1.4類型斷言表達式
4.1.5類型轉換表達式
4.2運算符
4.2.1運算符優先級
4.2.2算術運算符
4.2.3比較運算符
4.2.4邏輯運算符
4.3語句
4.3.1賦值語句
4.3.2if語句
4.3.3for語句
4.3.4switch語句
4.3.5select語句
4.3.6表達式語句
4.3.7go語句
4.3.8終結語句
第5章類型系統
5.1定義類型
5.2類型別名
5.3類型匹配
5.4可賦值性
5.5可轉換性
5.6零值
第6章包
6.1包聲明
6.2包導入
6.3循環導入
6.3.1合並包
6.3.2提取依賴共性
6.3.3轉移功能
6.4包初始化
6.5程序初始化
第7章字符串
7.1字節序列
7.2字符串字面量
7.2.1解釋型字面量
7.2.2原始字面量
7.3字符碼位與rune
7.4不可變性
7.4.1不可變的優點
7.4.2不可變的缺點
7.5UTF8
7.5.1Unicode與UTF8
7.5.2UTF8編碼方式
7.6UTF8編程實例
第8章數組和切片
8.1數組
8.1.1數組基本用法
8.1.2數組的內存布局
8.1.3數組的值與指針
8.2切片
8.2.1切片的定義
8.2.2切片的值
8.2.3make()函數
8.2.4copy()函數
8.2.5append()函數
8.2.6append()函數的註意事項
8.2.7標準庫slices包
8.3數組和切片的遍歷
第9章結構體
9.1結構體的字段
9.1.1字段的類型
9.1.2字段的名稱
9.1.3字段的標簽
9.2結構體的值
9.3結構體的方法
9.4結構體的嵌入式字段
第10章map
10.1map的基本用法
10.1.1map的基本操作
10.1.2map的初始化
10.1.3map的遍歷
10.2map的特點
10.3map的實現
10.3.1單獨鏈表法
10.3.2充分簡化的map
10.4map的值
10.5哈希表的擴展應用
10.5.1文件哈希表結構
10.5.2文件哈希表的實現
第11章Channel
11.1chan的基本用法
11.1.1chan的創建
11.1.2chan的阻塞
11.1.3chan的方向
11.1.4chan的關閉
11.2select語句
11.2.1解除阻塞
11.2.2default分支
11.2.3超時控制
11.2.4適應過慢的消費者
11.3chan的值
11.4chan編程實例
第12章指針
12.1指針的本質
12.1.1指針與數據
12.1.2指針變量和多級指針
12.1.3隱式間接引用
12.1.4切片與數組指針
12.1.5字面量的指針
12.1.6零大小變量的指針
12.2指針的必要性
12.2.1Go語言的復制語義
12.2.2指針的引用語義
12.3逃逸分析
12.4棧復制
第13章函數與方法
13.1函數的參數
13.1.1變長參數
13.1.2參數的求值順序
13.2函數的返回值
13.3函數類型
13.4匿名函數
13.4.1匿名函數示例
13.4.2閉包
13.4.3閉包共享狀態
13.5高階函數
13.5.1函數作為輸入
13.5.2函數作為輸出
13.6方法
13.6.1方法集
13.6.2指針接收者
13.6.3方法表達式
13.6.4方法值
13.7defer語句
13.7.1defer的用法
13.7.2defer的註意事項
第14章接口
14.1基本接口
14.1.1對行為的抽象
14.1.2調用雙方的合約
14.1.3接口的嵌入
14.1.4接口與多態
14.1.5接口的值
14.1.6接口類型轉換
14.1.7nil接口
14.1.8鴨子類型的缺點
14.2泛型接口
第15章error
15.1error示例
15.2生成error值
15.3包裝error值
15.4解包error值
15.5非錯誤error
第16章Goroutine
16.1創建Goroutine
16.2Goroutine的調度
16.2.1廚師與客戶的例子
16.2.2線程與Goroutine
16.2.3調度器工作原理
16.3panic與recover
16.3.1panic的成因
16.3.2panic的傳播
16.4等待Goroutine結束
16.4.1使用WaitGroup
16.4.2使用chan
第17章Context
17.1取消信號
17.2Context簡介
17.3Context的用法
17.3.1標準庫中的Context
17.3.2Context編程實例
17.4Context Value
17.4.1Context Value簡介
17.4.2標準庫中的Context Value
17.4.3Context Value編程實例
第18章並發編程
18.1Goroutine簡介
18.2同步
18.2.1chan作為信號
18.2.2chan傳遞數據
18.2.3chan控制並發量
18.2.4Mutex手工同步
18.2.5Once確保只運行一次
18.2.6Cond通知或廣播
18.2.7atomic原子操作
18.2.8Goroutine正常退出
18.2.9同步的本質
18.3並發同步編程實例
第19章泛型
19.1泛型與抽象
19.2Go泛型
19.2.1類型參數和實例化
19.2.2類型約束
19.2.3類型推導
19.3泛型類型系統
19.3.1實例化類型
19.3.2核心類型
19.3.3類型參數
19.4疊代器
19.4.1疊代器的基本用法
19.4.2疊代器的實現原理
19.4.3拉取型疊代器
19.4.4疊代器的應用
19.5泛型之前的“泛型”
19.6泛型實踐
19.6.1看懂泛型代碼
19.6.2編寫泛型代碼
19.7泛型方法的困境
第20章測試
20.1功能測試
20.1.1功能測試的例子
20.1.2T的常用方法
20.1.3表驅動測試
20.2測試覆蓋
20.3性能測試
20.3.1性能測試的例子
20.3.2B的常用方法
20.4模糊測試
20.4.1模糊測試的例子
20.4.2F的常用方法
20.4.3普通運行模糊測試
20.5子測試
20.6並行測試
20.6.1T的並行
20.6.2B的並行
20.7示例代碼
20.8go test的運行模式
20.9TestMain()和命令行參數
20.10專有測試
第21章模塊
21.1模塊的基本結構
21.2模塊的請求模式
21.2.1代理模式
21.2.2直接模式
21.3模塊的版本
21.3.1語義化版本
21.3.2偽版本
21.3.3主版本後綴
21.3.4版本標註
21.3.5最低版本選擇
21.3.6撤回模塊
21.3.7廢棄模塊
21.4模塊的校驗
21.4.1go.sum文件
21.4.2校驗和數據庫
21.5工作區
21.6私有模塊
21.6.1私有代理服務所有模塊
21.6.2私有代理服務私有模塊
21.6.3直接訪問私有模塊
21.6.4傳遞登錄憑證
21.7Go模塊常用命令
21.7.1初始化模塊
21.7.2添加或更新依賴
21.7.3查詢可用升級
21.7.4整理go.mod文件
21.7.5安裝可執行程序
第22章文檔註釋
22.1包文檔
22.2命令程序文檔
22.3類型文檔
22.4函數文檔
22.5常量和變量文檔
22.6文檔註釋的語法
22.6.1段落
22.6.2標題
22.6.3鏈接
22.6.4文檔鏈接
22.6.5列表
22.6.6代碼塊
後記
參考文獻







