Go語言編程入門與實戰技巧

Go語言編程入門與實戰技巧

《Go語言編程入門與實戰技巧》 全棧開發者傾情奉獻,全方位講解Go語言的核心內容,從源碼層面了解其實現原理 黃靖鈞 編著 ISBN 978-7-121-34966-9 2018年9月出版 定價:79.00元 420頁 16開

內容提要

《Go語言編程入門與實戰技巧》從內容上分為三大部分,第一部分主要介紹Go語言的基礎知識,包括Go語言的安裝和開發工具,介紹了Go語言的特性與適合的場景,然後講解了Go語言的程式結構和數據類型,並針對函式和一些關鍵字的用法與數據類型的調用原理做了闡述。第二部分介紹了Go語言數據結構和標準庫,結合實際套用場景探討了日常生產環境會遇到的問題與解決辦法。第三部分主要介紹Go語言的測試工具和用法,並重點講解了Go語言的記憶體管理機制,深入理解Go語言的設計哲學,了解Go語言底層的記憶體管理和並發機制,為更進一步的學習打下堅實的基礎。

《Go語言編程入門與實戰技巧》適合對計算機編程尤其是對Go語言編程感興趣的新手作為入門教程閱讀,還適合想在Web開發領域有所發展的程式設計師學習

目錄

第1章 認識Go語言 1

1.1 Go語言簡介 1

1.1.1 Go語言簡史 1

1.1.2 Go語言特性 2

1.1.3 誰適合使用Go語言 2

1.2 Go語言的開發環境部署 3

1.2.1 Go語言環境變數 3

1.2.2 在Linux上安裝Go語言環境 3

1.2.3 在Mac OS上安裝Go語言環境 5

1.2.4 在Windows上安裝Go語言環境 5

1.3 Go語言的基本命令及使用 5

1.3.1 GOROOT結構 6

1.3.2 GOPATH結構 7

1.3.3 Go語言命令行參數 8

1.3.4 第一個Go語言程式 12

1.4 Go語言的開發工具 14

1.4.1 Code/Atom 14

1.4.2 VIM-Go 17

1.4.3 Gogland 18

1.4.4 LiteIDE 18

1.4.5 Cloud IDE 19

1.5 本章小結 23

第2章 程式結構 24

2.1 Go語言程式元素 24

2.1.1 標識符 24

2.1.2 關鍵字 25

2.1.3 字面量 25

2.1.4 分隔設定 25

2.1.5 運算符 26

2.1.6 注釋 27

2.2 Go語言基本概念 28

2.2.1 常量 28

2.2.2 變數 32

2.3 本章小結 37

第3章 基礎數據類型 38

3.1 整型 39

3.1.1 整型的表示 39

3.1.2 整型的運算 39

3.2 浮點型 41

3.2.1 浮點型的表示 41

3.2.2 浮點型的運算 42

3.2.3 複數 42

3.3 字元與字元串 44

3.3.1 字元串的表示 44

3.3.2 操作字元串 46

3.3.3 字元串格式化 60

3.4 布爾型 61

3.4.1 布爾型的表示 61

3.4.2 布爾型的運算 62

3.5 基本數據類型的擴展 63

3.5.1 強制類型轉換 63

3.5.2 自定義類型 64

3.5.3 類型別名 64

3.5.4 指針 65

3.6 本章小結 69

第4章 流程控制 70

4.1 條件語句 70

4.1.1 if判斷 71

4.1.2 if-else判斷 71

4.1.3 else-if判斷 73

4.1.4 初始化子語句 74

4.2 選擇語句 75

4.2.1 switch語句 75

4.2.2 switch初始化語句 78

4.2.3 select語句 79

4.3 循環語句 80

4.3.1 for的子語句 81

4.3.2 range子語句 82

4.4 延遲語句 84

4.5 標籤 87

4.5.1 break 87

4.5.2 continue 89

4.5.3 goto 90

4.6 本章小結 91

第5章 函式 92

5.1 認識函式 92

5.1.1 函式的聲明 92

5.1.2 函式的參數 93

5.1.3 函式的返回值 94

5.2 函式的基礎 95

5.2.1 多返回值 96

5.2.2 函式作為參數 97

5.2.3 函式作為類型 98

5.2.4 可變參數 99

5.2.5 匿名函式與閉包 102

5.2.6 遞歸函式 106

5.2.7 內置函式 108

5.3 函式進階 108

5.3.1 參數傳遞機制 108

5.3.2 defer與跟蹤 111

5.3.3 錯誤與恢復 116

5.4 本章小結 122

第6章 複合數據類型 123

6.1 數組 123

6.1.1 聲明數組 123

6.1.2 訪問與修改 124

6.1.3 多維數組 126

6.1.4 將數組傳遞給函式 127

6.2 切片 128

6.2.1 創建數組切片 129

6.2.2 切片的使用 131

6.2.3 多維切片 137

6.2.4 將切片傳遞給函式 137

6.3 映射 138

6.3.1 映射的實現 138

6.3.2 映射的創建 139

6.3.3 映射的使用 139

6.3.4 將映射傳遞給函式 141

6.4 本章小結 142

第7章 包 144

7.1 包的基礎 144

7.1.1 包的結構 146

7.1.2 包的導入 147

7.1.3 包的使用 153

7.1.4 Go語言工具箱 154

7.2 自定義包 156

7.2.1 包的製作 157

7.2.2 特定平台的代碼 157

7.2.3 godoc生成文檔 158

7.2.4 包的打包與發布 159

7.2.5 自定義包的導入 164

7.3 本章小結 165

第8章 結構體與方法 166

8.1 結構體 166

8.1.1 結構體定義 166

8.1.2 結構體使用 172

8.1.3 帶標籤的結構體 175

8.1.4 匿名欄位和內嵌結構體 176

8.2 類型系統 179

8.2.1 用戶自定義類型 179

8.2.2 值語義和引用語義 182

8.3 方法 184

8.3.1 方法聲明 184

8.3.2 為類型添加方法 187

8.3.3 工廠方法創建結構體 188

8.3.4 基於指針對象的方法 190

8.3.5 方法值和方法表達式 191

8.3.6 方法和未導出欄位 193

8.3.7 嵌入類型的方法和繼承 194

8.4 本章小結 197

第9章 接口與反射 198

9.1 接口 198

9.1.1 接口是什麼 199

9.1.2 接口類型與約定 204

9.1.3 接口實現 208

9.1.4 嵌套接口 210

9.1.5 接口賦值 211

9.1.6 接口查詢 213

9.1.7 接口組合 214

9.2 反射 215

9.2.1 方法和類型的反射 215

9.2.2 通過反射修改設定值 216

9.2.3 反射結構 218

9.2.4 Printf和反射 220

9.3 本章小結 222

第10章 並發編程 223

10.1 並發編程基礎 223

10.1.1 並發與並行 223

10.1.2 指定使用核心數 225

10.2 協程(goroutine) 227

10.2.1 協程基礎 228

10.2.2 協程間通信 229

10.3 通道(channel) 231

10.3.1 基本語法 232

10.3.2 select 232

10.3.3 緩衝機制 233

10.3.4 逾時和計時器 234

10.3.5 channel的傳遞 235

10.3.6 單向channel 236

10.3.7 關閉channel 237

10.4 並發進階 237

10.4.1 多核並行化 237

10.4.2 協程同步 239

10.4.3 協程和恢復 242

10.5 本章小結 243

第11章 網路編程 244

11.1 Socket編程 244

11.1.1 什麼是Socket 244

11.1.2 Dial()函式 246

11.1.3 ICMP示例 247

11.1.4 TCP Socket 249

11.1.5 UDP Socket 253

11.2 HTTP編程 255

11.2.1 HTTP客戶端 255

11.2.2 HTTP伺服器端 260

11.3 RPC編程 262

11.3.1 Go RPC 263

11.3.2 HTTP RPC 263

11.3.3 TCP RPC 266

11.3.4 JSON RPC 268

11.3.5 RPC接口 271

11.4 資料庫 272

11.4.1 database/sql接口 272

11.4.2 使用MySQL資料庫 277

11.4.3 使用SQLite資料庫 280

11.4.4 使用PostgreSQL資料庫 282

11.4.5 NoSQL資料庫操作 286

11.5 Go語言使用Cookie 287

11.5.1 設定Cookie 287

11.5.2 讀取Cookie 288

11.6 本章小結 288

第12章 I/O編程 289

12.1 輸入/輸出 289

12.1.1 io:基本I/O接口 289

12.1.2 fmt:格式化I/O 292

12.1.3 文本處理 298

12.2 檔案系統 298

12.2.1 os:系統功能實現 298

12.2.2 path:兼容路徑操作 299

12.3 數據結構與算法 303

12.3.1 排序 304

12.3.2 container 310

12.4 本章小結 314

第13章 檔案處理 315

13.1 檔案操作 315

13.1.1 創建檔案與查看狀態 316

13.1.2 重命名與移動 319

13.1.3 打開與關閉 319

13.1.4 刪除與截斷 321

13.1.5 讀寫檔案 321

13.1.6 許可權控制 325

13.1.7 檔案連結 328

13.2 XML處理 330

13.2.1 解析XML 330

13.2.2 生成XML 333

13.3 JSON處理 336

13.3.1 解析JSON 336

13.3.2 生成JSON 338

13.4 日誌記錄 340

13.4.1 Logrus 341

13.4.2 Seelog 342

13.5 壓縮 343

13.5.1 打包與解包 343

13.5.2 壓縮與解壓 345

13.6 本章小結 347

第14章 安全與測試 348

14.1 安全 348

14.1.1 安全相關的基礎概念 348

14.1.2 通信安全 350

14.2 測試 354

14.2.1 單元測試 354

14.2.2 基準測試 362

14.3 本章小結 368

第15章 記憶體管理 369

15.1 記憶體分配 369

15.1.1 記憶體管理基本概念 369

15.1.2 逃逸分析 373

15.2 TCMalloc 376

15.2.1 整體結構 377

15.2.2 小記憶體分配 378

15.2.3 CentralCache 379

15.2.4 大記憶體分配 381

15.3 Mspan(記憶體管理器) 384

15.4 垃圾回收 398

15.4.1 標記清理算法 399

15.4.2 標記實現 403

15.4.3 清理 406

15.4.4 監控 408

15.5 本章小結 408

作者簡介

黃靖鈞:全棧開發者,長期以來一直使用Go語言開發網路套用,在Go語言編程方面經驗豐富。熱衷開源,深度參與Docker及其生態建設,積極為Potainer等眾多著名項目貢獻代碼。曾任PaaS與CaaS等類型項目的後端Go開發,現從事基礎設施架構與數據中心開發工作,專注高並發、微服務領域的研究。

相關詞條

熱門詞條

聯絡我們