.
前言第一章 設定你的Go環境 安裝Go工具 你的第一個Go程式選擇你的工具 Makefiles Go Compatibility Promise 保持最新狀態第二章 預宣告型態,及宣告 預宣告型態 var vs. := 使用const typed與untyped常數 未使用的變數 為變數和常數命名第三章 複合型態 陣列— 太僵化,無法直接使用 slice 字串與rune與byte map struct 第四章 區塊、遮蔽,與控制結構 區塊 遮蔽變數 if 四種for switch goto—你沒看錯,正是goto第五章 函式 宣告與呼叫函式 函式是值 closure defer Go是以值呼叫的 第六章 指標 指標快速入門 別怕指標 指標代表可變參數 指標是最終手段 指標傳遞效能 零值vs.無值 map與slice之間的區別 將slice當成緩衝區 減少記憶體回收程序的工作負擔 調整記憶體回收程序第七章 型態、方法,與介面 Go的型態 方法 iota用於列舉⋯有時啦! 用內嵌來組合 內嵌並非繼承 介面快速入門 介面是型態安全的鴨子定型 內嵌與介面 接收介面,回傳struct 介面與nil 介面是可比較的 空介面沒有任何意義 型態斷定與型態切換 謹慎使用型態斷定和typeswitch 函式型態是通往介面的橋樑 隱性介面可讓依賴注入更方便進行 Wire Go不太物件導向(這是很棒的事情)第八章 泛型 泛型可減少重複的程式碼,並提高型態安全性 Go泛型簡介 泛型函式抽象演算法 泛型與介面 使用型態項來指定運算子 型態推斷與泛型 用型態元素來限制常數 結合泛型函式與泛型資料結構 關於comparable的其他事項 被排除的功能 符合慣例的Go與泛型 在標準程式庫中加入泛型 未來解鎖的功能第九章 錯誤 如何處理錯誤:基本知識 用字串來指出簡單的錯誤 哨符錯誤 error是值 包裝錯誤 包裝多個錯誤 Is與As 用defer來包裝error panic與recover 從error取得堆疊追蹤第十章 模組、套件,與匯入 版本庫、模組,與套件 使用go.mod 建立套件 使用模組 發布你的模組 控制模組的版本 模組代理伺服器第十一章 Go工具 使用go run來試驗小型程式 使用go install來加入第三方工具 使用goimports來改善匯入格式 使用程式碼品質掃描器 使用govulncheck來掃描有漏洞的依賴項目 將內容嵌入你的程式 嵌入隱藏檔案 使用go generate 使用go generate和Makefile 讀取Go二進制檔案中的組建資訊 為其他平台組建Go二進制檔 使用組建標籤 測試不同版本的Go 使用gohelp來進一步瞭解Go工具第十二章 Go的並行 使用並行的時機 goroutine channel select 並行實踐法與模式 何時該使用mutex,而不是channel 原子變數—你應該不需要它們 進一步瞭解並行第十三章 標準程式庫 io與朋友 time encoding/json net/http 結構化的日誌記錄第十四章 context 什麼是context? 值 取消 帶有最終期限的context 在你自己的程式中處理context取消第十五章 編寫測試程式 測試的基本知識 執行表格測試 並行執行測試 檢查代碼覆蓋率 模糊測試(Fuzzing) 使用效能評測 使用Go的stub 使用httptest 使用整合測試與組建標籤 使用資料競態檢查器來尋找並行問題第十六章 惡龍禁地:Reflect、Unsafe與Cgo reflection可讓你在執行期使用型態 unsafe不安全 cgo用於整合,而非提升效能索引
高效能Go程式設計|資料驅動的效能優化 深入淺出Go 現代系統管理|可靠及永續的系統管理