深入理解Go語言——規範、原理與實踐

袁曉輝

  • 出版商: 清華大學
  • 出版日期: 2026-03-01
  • 售價: $594
  • 語言: 簡體中文
  • ISBN: 7302709173
  • ISBN-13: 9787302709176
  • 相關分類: Go 程式語言
  • 下單後立即進貨 (約4週~6週)

  • 深入理解Go語言——規範、原理與實踐-preview-1
  • 深入理解Go語言——規範、原理與實踐-preview-2
  • 深入理解Go語言——規範、原理與實踐-preview-3
  • 深入理解Go語言——規範、原理與實踐-preview-4
  • 深入理解Go語言——規範、原理與實踐-preview-5
  • 深入理解Go語言——規範、原理與實踐-preview-6
  • 深入理解Go語言——規範、原理與實踐-preview-7
深入理解Go語言——規範、原理與實踐-preview-1

商品描述

"本書以語言規範和文檔為基礎,輔以翔實的範例代碼,引導讀者逐步打實Go語言編程基礎、掌握Go語言的**實踐,並深入理解 Go語言的設計理念。對於編程語言來講,語法是其“表”而規範和文檔是其“本”,Go語言編程中的很多問題和誤解的根本原因都在於對其“本”理解的欠缺。本書以具體的實例程序來展現Go語言的“表”,並對重點代碼進行詳解以佐證其“本”。萬變不離其宗,只有懂得了根本才能以不變應萬變;只有掌握了原理才能在實際編碼中得心應手、遊刃有余。 本書共分22章,各章均以Go語言官方文檔為指導,力圖準確無誤地把知識傳達給讀者。對於Go語言編程中的重要知識點,本書將從是什麼、為什麼、怎麼辦三個角度入手,逐步講解,力圖清晰透徹。本書各章既包括了日常都要使用的string、slice、chan等經典工具,也包括了相對較新的泛型和Fuzz tesing等前沿特性,更有筆者對編程的感悟及經驗總結。 讀者在閱讀本書前應當具備一定的Go語言編程基礎,掌握編寫、構建和運行簡單Go程序所需的基本知識。 本書既可以作為Go編程愛好者的進階選擇,也可以作為Go從業者的案頭參考書。讀者可以選擇從目錄中找到感興趣的知識點,直接閱讀相關章節,也可以選擇從頭都到尾通讀一遍來查漏補缺。 "

作者簡介

袁曉輝,資深高級軟件工程師,編程愛好者,知名手機軟件“WiFi分析儀”作者。作者在將近 20 年的軟件開發生涯中,從事過編譯器開發、類庫編寫、文檔翻譯以及 GUI 系統設計等諸多具體工作。在工作之余,作者也熱衷於學習和研究包括 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.5UTF8

7.5.1Unicode與UTF8

7.5.2UTF8編碼方式

7.6UTF8編程實例

第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代碼塊

後記

參考文獻