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

袁曉輝

  • 出版商: 清華大學
  • 出版日期: 2026-03-01
  • 售價: $594
  • 貴賓價: 9.5$564
  • 語言: 簡體中文
  • 頁數: 360
  • ISBN: 7302709173
  • ISBN-13: 9787302709176
  • 相關分類: Go 程式語言
  • 立即出貨 (庫存 < 4)

  • 深入理解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代碼塊

 

後記

 

參考文獻