目 錄Contents
前言
致謝
作者簡介
第一部分 初步了解Go
第1章 Go簡介 4
1.1 Go與Java的初步比較 4
1.1.1 Go是編譯型語言(Java
是解釋型語言) 5
1.1.2 Go與Java的程序結構類似 5
1.1.3 Go與Java有影響代碼結構
的代碼風格差異 5
1.1.4 Go和Java都是過程語言 6
1.1.5 Java是一門面向對象的語言,
但Go不是完全面向對象的 6
1.1.6 Java是一門高度函數式語言,
Go不是 6
1.1.7 Java是一門高度聲明性語言,
Go不是 7
1.1.8 很多Java特性是注解驅動的 7
1.1.9 Java和Go都使用內存管理
(垃圾收集器) 7
1.1.10 Go和Java都支持并發(fā),
但方式不同 8
1.1.11 Go的運行時比JRE簡單 8
1.1.12 Go程序構建過程是不同的 8
1.1.13 Go與Java有相似的發(fā)布
周期 9
1.2 Java有而Go沒有的特性 9
1.2.1 多重賦值 10
1.2.2 語句和操作符 10
1.2.3 assert語句 10
1.2.4 while與do語句 10
1.2.5 throw語句/throws子句 11
1.2.6 strictfp、transient、volatile、synchronized、abstract、
static 11
1.2.7 對象、類、內部類、Lambda、this、super、顯式構造
函數 11
1.2.8 泛型和方法 12
1.2.9 廣泛的函數式編程能力 13
1.2.10 原始值的裝箱 13
1.2.11 源碼注解 13
1.2.12 多種可見性 13
1.2.13 重載/覆蓋函數 14
1.2.14 正式的枚舉 14
1.2.15 內置二進制數據自
序列化 14
1.2.16 并發(fā)集合 14
1.3 Go與Java的深度比較 15
第二部分 Go語言
第2章 Go的基礎特性 21
2.1 語言關鍵字 21
2.2 操作符和標點符號 23
2.3 Go操作符優(yōu)先級 26
2.4 Go內置函數 27
第3章 Go的關鍵特性 28
3.1 簡單的Go程序示例 30
3.2 Go包 34
3.3 Go注釋 35
3.4 Go構建/運行過程 36
3.4.1 Go集成開發(fā)環(huán)境 37
3.4.2 構建Go程序 40
3.4.3 運行Go程序 41
3.4.4 字節(jié)碼與實碼 42
3.5 Go命令行工具 43
3.5.1 捆綁在Go命令中的工具 44
3.5.2 其他工具 45
3.6 Go運行程序而非類 45
3.7 Go內存管理 46
3.8 Go標識符 50
3.9 Go作用域 50
Go作用域與Go源文件 52
3.10 初始化Go變量 54
3.11 Go標識符的生命期 56
3.12 Go模塊摘要 56
3.13 Go賦值和表達式 60
3.14 Go中的文本格式設置 61
3.15 Go協程(并發(fā)執(zhí)行單元) 65
3.15.1 并發(fā)問題 65
3.15.2 Go并發(fā) 66
3.15.3 Go協程示例 69
第4章 Go類型 76
4.1 基本/內置類型 76
4.1.1 數值 76
4.1.2 字符和字符串 77
4.1.3 引用與指針類型 78
4.1.4 深入基本數據類型 80
4.1.5 方法作為函數 95
4.1.6 任何被聲明的類型都可以
有自定義函數 96
4.1.7 函數作為值 97
4.1.8 結構字段 102
4.1.9 結構體字面量 104
4.1.10 嵌套結構 104
4.1.11 結構體字段對齊 105
4.1.12 接口 108
4.1.13 復合接口 110
4.2 變量聲明 113
4.3 常量聲明 115
4.4 類型轉換 116
4.5 類型測試 117
4.6 派生類型聲明 119
第5章 錯誤與panic 122
5.1 Go錯誤 122
5.2 Go panic 123
5.3 錯誤與panic演示 126
第6章 Go語句 131
6.1 包與導入語句 132
6.2 賦值語句 133
6.3 聲明變量 133
6.4 聲明命名常量 135
6.5 if/else語句 136
6.6 switch語句 138
6.7 while語句 140
6.8 do-while語句 140
6.9 帶索引的for語句 141
6.10 遍歷集合的for語句 141
6.11 無限循環(huán) 143
6.12 break與continue語句 144
6.13 goto語句 144
6.14 return語句 144
6.15 defer語句 145
6.16 go語句 146
6.17 select語句 147
第7章 接口應用 149
7.1 接口是核心 149
7.2 有關依賴注入 151
7.3 面向切面編程 156
第8章 Go單元測試和基準測試 160
8.1 Go測試用例和基準測試 160
8.2 Java測試用例 169
第9章 Go的未來 173
9.1 改進的錯誤處理 173
9.2 Go泛型 174
9.3 生命游戲的capstone示例 178
9.4 生命游戲的Go源代碼 181
9.4.1 Java實現的capstone
項目 182
9.4.2 Go實現的capstone
項目 213
9.5 API輸出 234
9.6 Game輸出 237
第三部分 Go庫綜述
第10章 主要包比較 248
10.1 Java語言包 248
10.2 JavaIO包 251
10.3 Java Text包 252
10.4 Java Time包 253
10.5 Java Util包 254
第11章 重要方法/函數比較 259
第12章 Go包概述 263
12.1 Go的文件訪問 263
12.2 壓縮服務 265
?12.2.1 存檔包 265
?12.2.2 壓縮包 267
12.3 image包 268
12.4 Input/Output(I/O) 269
12.5 字節(jié)包 274
12.6 格式化包 276
12.7 數據集合 278
12.8 排序 279
12.9 上下文包 281
12.10 密碼學、哈希和數據
編碼 283
12.11 encoding包 284
第13章 SQL數據庫訪問 288
第14章 客戶端和服務器支持 296
14.1 MIME包 296
14.2 網絡包 296
14.3 net包 296
14.4 HTTP template包 305
14.5 net.http包 309