目 录 前言 Go語言起源 Go語言項目 本書的組織 更多的信息 致謝 入門 Hello, World 命令行參數 査找重複的行 GIF動畵 獲取URL 併發獲取多個URL Web服務 本章要點 程序結構 命名 聲明 變量 賦值 類型 包和文件 作用域 基礎數據類型 整型 浮點數 複數 布爾型 字符串 常量 複合數據類型 數組 Slice Map 結構體 JSON 文本和HTML模闆 函數 函數聲明 本文档使用 看云 构建 - 2 - 遞歸 多返迴值 錯誤 函數值 匿名函數 可變參數 Deferred函數 Panic異常 Recover捕獲異常 方法 方法聲明 基於指針對象的方法 通過嵌入結構體來擴展類型 方法值和方法表達式 示例 Bit數組 封裝 接口 接口是合約 接口類型 實現接口的條件 flag.Value接口 接口值 sort.Interface接口 http.Handler接口 error接口 示例 表達式求值 類型斷言 基於類型斷言識别錯誤類型 通過類型斷言査詢接口 類型分支 示例 基於標記的XML解碼 補充幾點 Goroutines和Channels Goroutines 示例 併發的Clock服務 示例 併發的Echo服務 Channels 併發的循環 示例 併發的Web爬蟲 基於select的多路複用 本文档使用 看云 构建 - 3 - 示例 併發的字典遍歷 併發的退出 示例 聊天服務 基於共享變量的併發 競爭條件 sync.Mutex互斥鎖 sync.RWMutex讀寫鎖 內存同步 sync.Once初始化 競爭條件檢測 示例 併發的非阻塞緩存 Goroutines和線程 包和工具 包簡介 導入路徑 包聲明 導入聲明 包的匿名導入 包和命名 工具 測試 go test 測試函數 測試覆蓋率 基準測試 剖析 示例函數 反射 爲何需要反射? reflect.Type和reflect.Value Display遞歸打印 示例 編碼S表達式 通過reflect.Value脩改值 示例 解碼S表達式 獲取結構體字段標識 顯示一個類型的方法集 幾點忠告 底層編程 unsafe.Sizeof, Alignof 和 Offsetof un