Go語言學習筆記

Go語言學習筆記

《Go語言學習筆記》是2016年7月電子工業出版社出版的圖書,作者是雨痕。

內容簡介

《Go語言學習筆記》經四年多逐步完善,內容覆蓋了語言、運行時、性能最佳化、工具鏈等各層面知識。且內容經大量讀者反饋和校對,沒有明顯的缺陷和錯誤。上卷細緻解析了語言規範相關細節,便於讀者深入理解語言相關功能的使用方法和注意事項。下卷則對運行時源碼做出深度剖析,引導讀者透徹了解語言功能背後的支持環境和運行體系,諸如記憶體分配、垃圾回收和並發調度等。

編輯推薦

傳說中的雨痕老師終於將自己的《Go學習筆記》付梓了!

一如既往的低調,也一如既往的務實。本書文風極簡,乾淨利落。

上卷(基於Go 1.6)細緻解析語言規範相關細節,下卷(基於Go 1.5.1)則對運行時源碼做出深度剖析。

內容提要

作為時下流行的一種系統程式語言,Go 簡單易學,性能很好,且支持各類主流平台。已有大量項目採用 Go 編寫,這其中就包括 Docker 等明星作品,其開發和執行效率早已被證明。

《Go語言學習筆記》 經四年多逐步完善,內容覆蓋了語言、運行時、性能最佳化、工具鏈等各層面知識。且內容經大量讀者反饋和校對,沒有明顯的缺陷和錯誤。上卷細緻解析了語言規範相關細節,便於讀者深入理解語言相關功能的使用方法和注意事項。下卷則對運行時源碼做出深度剖析,引導讀者透徹了解語言功能背後的支持環境和運行體系,諸如記憶體分配、垃圾回收和並發調度等。

《Go語言學習筆記》不適合編程初學者入門,可供有實際編程經驗或正在使用Go 工作的人群參考。

圖書目錄

上卷 語言詳解

第1 章 概述 . 3

1.1 特徵 . 3

1.2 簡介 . 6

第2 章 類型 . 18

2.1 變數 . 18

2.2 命名 . 22

2.3 常量 . 24

2.4 基本類型 . 28

2.5 引用類型 . 31

2.6 類型轉換 . 33

2.7 自定義類型 . 34

第3 章 表達式 38

3.1 保留字 . 38

3.2 運算符 . 38

3.3 初始化 . 44

3.4 流控制 . 45

第4 章 函式 . 59

4.1 定義 . 59

4.2 參數 . 63

4.3 返回值 . 67

4.4 匿名函式 . 69

4.5 延遲調用 . 76

4.6 錯誤處理 . 80

第5 章 數據 . 86

5.1 字元串 . 86

5.2 數組 . 95

5.3 切片 . 100

5.4 字典 . 110

5.5 結構 . 118

第6 章 方法 . 130

6.1 定義 . 130

6.2 匿名欄位 . 133

6.3 方法集 . 134

6.4 表達式 . 136

第7 章 接口 . 141

7.1 定義 . 141

7.2 執行機制 . 145

7.3 類型轉換 . 150

7.4 技巧 . 151

第8 章 並發 . 153

8.1 並發的含義 . 153

8.2 通道 . 163

8.3 同步 . 183

第9 章 包結構 187

9.1 工作空間 . 187

9.2 導入包 . 188

9.3 組織結構 . 192

9.4 依賴管理 . 197

第10 章 反射 . 200

10.1 類型 . 200

10.2 值 . 207

10.3 方法 . 210

10.4 構建 . 212

10.5 性能 . 213

第11 章 測試 . 216

11.1 單元測試 . 216

11.2 性能測試 . 221

11.3 代碼覆蓋率 . 224

11.4 性能監控 . 226

第12 章 工具鏈 229

12.1 安裝 . 229

12.2 工具 . 231

12.3 編譯 . 234

下卷 源碼剖析

第13 章 準備 . 243

第14 章 引導 . 244

第15 章 初始化 247

第16 章 記憶體分配 255

16.1 概述 . 255

16.2 初始化 . 259

16.3 分配 . 265

16.4 回收 . 279

16.5 釋放 . 283

16.6 其他 . 285

第17 章 垃圾回收 291

17.1 概述 . 291

17.2 初始化 . 293

17.3 啟動 . 294

17.4 標記 . 300

17.5 清理 . 311

17.6 監控 . 314

17.7 其他 . 317

第18 章 並發調度 326

18.1 概述 . 326

18.2 初始化 . 327

18.3 任務 . 332

18.4 執行緒 . 344

18.5 執行 . 353

18.6 連續棧 . 370

18.7 系統調用 . 385

18.8 監控 . 390

18.9 其他 . 396

第19 章 通道 . 407

19.1 創建 . 407

19.2 收發 . 408

19.3 選擇 . 418

第20 章 延遲 . 427

20.1 定義 . 427

20.2 性能 . 433

20.3 錯誤 . 434

第21 章 析構 . 438

21.1 設定 . 438

21.2 清理 . 443

21.3 執行 . 445

第22 章 快取池 450

22.1 初始化 . 450

22.2 操作 . 453

22.3 清理 . 455

前言

前兩天忙裡偷閒將第五版《Go 學習筆記》上下冊合併,預備交給出版社編輯。不經意掃了一眼更新記錄,才發覺四年光陰恍然而過。不知從何時起,歲月流逝的速度越來越快,抓不得,留不住。

我很擅長堅持,不知是因為笨,還是性情遲鈍的緣故。在給編輯寫作者簡介時,我努力回憶自己最近二十年的經歷,好像除了些紛擾的人和事外,就是一段段在不同技術圈子裡日夜探索的記憶,歷久彌新。

現在帶了些學生,每每交流時,總偷偷慶幸自己是個先行者,沒有網際網路的“黑暗時代”反而造就了踏實的基礎,遠不是現今亂花迷眼的境況。看著他們對於具體實現“懵懂無知”的表現,我對於寫書這事就愈發虔誠,生怕誤了別人的光陰和熱情。似乎《學習筆記》這個名字才是最好的詮釋,立不得案頭,權作閒書,稍能觀感一二即可。

因喜愛 C,故對 Go 關注得很早。觀望良久,終究受不住誘惑,一頭栽了進去。邊學邊記,於是有了最早的《學習筆記》。只因錯漏過多,發到某論壇著實沒砸出什麼水花來。此後,對於宣傳也淡了心思,再不願出去,只自己默默更新,或發到微博,給一些熟識尚惦記這事的人打個招呼。

某日,一編輯發來訊息,詢問我是否出版,才恍然知道這書原也是可印的,好像自己從沒想過。猶豫再三,且將幾本筆記從 GitHub 下架。只可惜,因某些理念不同,最終未能如願,這一拖就是許多時日。

去年受老謝的邀請,前往上海參加 Gopher China 大會。期間多次被問及何時能有實體書出版,熄了許久的心思方又活過來。年中,重新寫了書稿,年底幾乎又重來一遍,心底對於出書總有些忐忑。直到聖誕節,才放了下冊出來。幸好,並沒有人出來指責我粗製濫造,方得心安。

我兒小乖還太小,於是猴年我一人回老家過年。也許是在外面太久,對搬進城裡的老家全然陌生,每日裡除了陪父母吃飯外,其他時間都用來寫上冊書稿。偶爾透過窗看見遠處的山影,才找回些幼時記憶。書寫得意外順利,即便網路不算通暢也未能影響到我。回京路上,我徹底定了主意,準備交付出版。

節後忙於培訓一事,書稿校對稍稍拖後了些。邊按章節調整,邊請群里的夥伴們幫忙審校,所幸趕在截止日期前完成。樣稿交到編輯手裡,雖尚有些收尾工作,但總算能放輕鬆些。這於我是個解脫,困於此的心思總算少了一大半。

依慣例,需在此感謝很多人。其中自然少不了對我多加鼓勵的家中太上領導和惦記良久的網路眾位大仙們。當然,最需感謝的是群里幫忙校對的小夥伴們,有溺水的魚、大內總管、starchou、老虎、日下、小E、春嬸、奮鬥娃等等。

讀者定位

本書並不適合用作編程初學者入門,因內容和文體都太過簡練了些。我厚臉推薦給有實際經驗或正用 Go 工作的人群,可於路途中當閒書翻看幾頁。

相關詞條

熱門詞條

聯絡我們