前言
Go語言起源
Go語言項目
本書的組織
更多的信息
致謝
入門
Hello, World
命令行參數
查找重複的行
GIF動畫
獲取URL
併發獲取多個URL
Web服務
本章要點
程序結構
命名
聲明
變量
賦值
類型
包和文件
作用域
基礎數據類型
整型
浮點數
複數
布爾型
字符串
常量
複合數據類型
數組
Slice
Map
結構體
JSON
文本和HTML模板
函數
函數聲明
遞歸
多返回值
錯誤
函數值
匿名函數
可變參數
Deferred函數
Panic異常
Recover捕獲異常
方法
方法聲明
基於指針對象的方法
通過嵌入結構體來擴展類型
方法值和方法表達式
示例: Bit數組
封裝
接口
接口是合約
接口類型
實現接口的條件
flag.Value接口
接口值
sort.Interface接口
http.Handler接口
error接口
示例: 表達式求值
類型斷言
基於類型斷言識別錯誤類型
通過類型斷言查詢接口
類型分支
示例: 基於標記的XML解碼
補充幾點
Goroutines和Channels
Goroutines
示例: 併發的Clock服務
示例: 併發的Echo服務
Channels
併發的循環
示例: 併發的Web爬蟲
基於select的多路複用
示例: 併發的目錄遍歷
併發的退出
示例: 聊天服務
基於共享變量的併發
競爭條件
sync.Mutex互斥鎖
sync.RWMutex讀寫鎖
內存同步
sync.Once惰性初始化
競爭條件檢測
示例: 併發的非阻塞緩存
Goroutines和線程
包和工具
包簡介
導入路徑
包聲明
導入聲明
包的匿名導入
包和命名
工具
測試
go test
測試函數
測試覆蓋率
基準測試
剖析
示例函數
反射
為何需要反射?
reflect.Type和reflect.Value
Display遞歸打印
示例: 編碼S表達式
通過reflect.Value修改值
示例: 解碼S表達式
獲取結構體字段標籤
顯示一個類型的方法集
幾點忠告
底層編程
unsafe.Sizeof, Alignof 和 Offsetof
unsafe.Pointer
示例: 深度相等判斷
通過cgo調用C代碼
幾點忠告
附錄
附錄A:原文勘誤
附錄B:作者譯者
附錄C:譯文授權
附錄D:其它語言
本书使用 GitBook 发布
附錄C:譯文授權
附錄C:譯文授權
除特別註明外,本站內容均採用
知識共享-署名(CC-BY) 3.0協議
授權,代碼遵循
Go項目的BSD協議
授權。