開啟主選單

求真百科

Go程序設計語言

來自 孔夫子網 的圖片

Go程序設計語言》,艾倫A. A. 多諾萬 著,李道兵,高博,龐向才,金鑫鑫,林齊斌 譯,出版社: 機械工業出版社。

機械工業出版社成立於1950年,是建國後國家設立的第一家科技出版社,前身為科學技術出版社,1952年更名為機械工業出版社[1]。機械工業出版社(以下簡稱機工社)由機械工業信息研究院作為主辦單位,目前隸屬於國務院國資委[2]

目錄

內容簡介

本書由《C程序設計語言》的作者Kernighan和谷歌公司Go團隊主管AlanDonovan聯袂撰寫,是學習Go語言程序設計指南。本書共13章,主要內容包括:Go的基礎知識、基本結構、基本數據類型、複合數據類型、函數、方法、接口、goroutine、通道、共享變量的並發性、包、go工具、測試、反射等。本書適合作為計算機相關專業的教材,也可供Go語言愛好者閱讀。

目錄

The Go Programming Language

出版者的話

譯者序

前言

第1章 入門 1

1.1 hello,world 1

1.2 命令行參數 3

1.3 找出重複行 6

1.4 GIF動畫 10

1.5 獲取一個URL 12

1.6 並發獲取多個URL 13

1.7 一個Web服務器 14

1.8 其他內容 17

第2章 程序結構 20

2.1 名稱 20

2.2 聲明 21

2.3 變量 22

2.3.1 短變量聲明 22

2.3.2 指針 23

2.3.3 new函數 25

2.3.4 變量的生命周期 26

2.4 賦值 27

2.4.1 多重賦值 27

2.4.2 可賦值性 28

2.5 類型聲明 29

2.6 包和文件 30

2.6.1 導入 31

2.6.2 包初始化 33

2.7 作用域 34

第3章 基本數據 38

3.1 整數 38

3.2 浮點數 42

3.3 複數 45

3.4 布爾值 47

3.5 字符串 47

3.5.1 字符串字面量 49

3.5.2 Unicode 49

3.5.3 UTF-8 50

3.5.4 字符串和字節slice 53

3.5.5 字符串和數字的相互轉換 56

3.6 常量 56

3.6.1 常量生成器iota 57

3.6.2 無類型常量 59

第4章 複合數據類型 61

4.1 數組 61

4.2 slice 63

4.2.1 append函數 66

4.2.2 slice就地修改 69

4.3 map 71

4.4 結構體 76

4.4.1 結構體字面量 78

4.4.2 結構體比較 80

4.4.3 結構體嵌套和匿名成員 80

4.5 JSON 82

4.6 文本和HTML模板 87

第5章 函數 92

5.1 函數聲明 92

5.2 遞歸 93

5.3 多返回值 96

5.4 錯誤 98

5.4.1 錯誤處理策略 99

5.4.2 文件結束標識 101

5.5 函數變量 102

5.6 匿名函數 104

5.7 變長函數 110

5.8 延遲函數調用 111

5.9 宕機 115

5.10 恢復 118

第6章 方法 120

6.1 方法聲明 120

6.2 指針接收者的方法 122

6.3 通過結構體內嵌組成類型 124

6.4 方法變量與表達式 127

6.5 示例:位向量 128

6.6 封裝 130

第7章 接口 133

7.1 接口即約定 133

7.2 接口類型 135

7.3 實現接口 136

7.4 使用flag.Value來解析參數 139

7.5 接口值 141

7.6 使用sort.Interface來排序 144

7.7 http.Handler接口 148

7.8 error接口 152

7.9 示例:表達式求值器 154

7.10 類型斷言 160

7.11 使用類型斷言來識別錯誤 161

7.12 通過接口類型斷言來查詢特性 162

7.13 類型分支 164

7.14 示例:基於標記的XML解析 166

7.15 一些建議 168

第8章 goroutine和通道 170

8.1 goroutine 170

8.2 示例:並發時鐘服務器 171

8.3 示例:並發回聲服務器 174

8.4 通道 176

8.4.1 無緩衝通道 177

8.4.2 管道 178

8.4.3 單向通道類型 180

8.4.4 緩衝通道 181

8.5 並行循環 183

8.6 示例:並發的Web爬蟲 187

8.7 使用select多路復用 190

8.8 示例:並發目錄遍歷 192

8.9 取消 195

8.10 示例:聊天服務器 198

第9章 使用共享變量實現並發 201

9.1 競態 201

9.2 互斥鎖:sync.Mutex 205

9.3 讀寫互斥鎖:sync.RWMutex 208

9.4 內存同步 208

9.5 延遲初始化:sync.Once 210

9.6 競態檢測器 212

9.7 示例:並發非阻塞緩存 212

9.8 goroutine與線程 218

9.8.1 可增長的棧 219

9.8.2 goroutine調度 219

9.8.3 GOMAXPROCS 219

9.8.4 goroutine沒有標識 220

第10章 包和go工具 221

10.1 引言 221

10.2 導入路徑 221

10.3 包的聲明 222

10.4 導入聲明 223

10.5 空導入 223

10.6 包及其命名 225

10.7 go工具 226

10.7.1 工作空間的組織 227

10.7.2 包的下載 228

10.7.3 包的構建 229

10.7.4 包的文檔化 231

10.7.5 內部包 232

10.7.6 包的查詢 233

第11章 測試 235

11.1 go test工具 235

11.2 Test函數 236

11.2.1 隨機測試 239

11.2.2 測試命令 240

11.2.3 白盒測試 242

11.2.4 外部測試包 245

11.2.5 編寫有效測試 246

11.2.6 避免脆弱的測試 247

11.3 覆蓋率 248

11.4 Benchmark函數 250

11.5 性能剖析 252

11.6 Example函數 254

第12章 反射 256

12.1 為什麼使用反射 256

12.2 reflect.Type和reflect.Value 257

12.3 Display:一個遞歸的值顯示器 259

12.4 示例:編碼S表達式 263

12.5 使用reflect.Value來設置值 266

12.6 示例:解碼S表達式 268

12.7 訪問結構體字段標籤 271

12.8 顯示類型的方法 273

12.9 注意事項 274

第13章 低級編程 276

13.1 unsafe.Sizeof、Alignof 和Offsetof 276

13.2 unsafe.Pointer 278

13.3 示例:深度相等 280

13.4 使用cgo調用C代碼 282

13.5 關於安全的注意事項 286

參考文獻