Go語言從入門到精通
明日科技
相關主題
商品描述
《Go語言從入門到精通》從初學者角度出發,通過通俗易懂的語言、豐富多彩的實例,詳細介紹了Go語言的基礎、進階提高和高級應用知識。全書分為4篇,共19章,包括初識Go語言、Go語言基礎、Go語言基本數據類型與運算符、流程控制、復合數據類型、函數、指針、結構體、接口、錯誤處理、並發編程、包管理、標準庫、編譯與測試工具、反射、MySQL數據庫編程、文件處理、網絡編程和Go語言在爬蟲中的應用等內容。所有知識都結合具體實例進行講解,涉及的程序代碼給出了詳細的註釋。全書共計98個應用實例,學練結合,讀者可以輕松領會Go語言的開發精髓,快速提升開發技能。
目錄大綱
第1篇 基礎知識
第1章 初識Go語言 2
視頻講解:24分鐘
1.1 Go語言簡介 2
1.1.1 為什麽要學習Go語言 2
1.1.2 Go語言的特性 3
1.1.3 Go語言與並發 3
1.1.4 Go語言的應用 4
1.2 Go語言開發環境 4
1.2.1 下載Go語言開發包 4
1.2.2 安裝Go語言開發包 6
1.2.3 配置Go語言環境變量 8
1.2.4 測試Go語言開發包是否正常運行 11
1.3 Go語言開發工具 11
1.3.1 下載VS Code 12
1.3.2 安裝VS Code 13
1.3.3 漢化VS Code 15
1.3.4 在VS Code中安裝Go語言插件 16
1.4 第一個Go語言程序 18
1.4.1 創建Go項目和Go文件 18
1.4.2 編寫第一個Go語言程序 24
1.4.3 運行Go語言程序 24
1.5 要點回顧 27
第2章 Go語言基礎 28
視頻講解:17分鐘
2.1 關鍵字和標識符 28
2.1.1 關鍵字 28
2.1.2 標識符命名規則 29
2.1.3 空白標識符 30
2.1.4 導出標識符 30
2.1.5 預定義標識符 32
2.2 程序的基本結構 32
2.3 作用域 33
2.4 註釋 34
2.5 要點回顧 34
第3章 Go語言基本數據類型與運算符 35
視頻講解:36分鐘
3.1 Go語言變量 35
3.1.1 變量的聲明 35
3.1.2 變量的初始化 37
3.1.3 匿名變量 39
3.1.4 變量的作用域 39
3.2 基礎類型 41
3.2.1 數值類型 41
3.2.2 布爾類型 42
3.2.3 字符串類型及其操作 43
3.3 類型轉換 48
3.4 自定義類型 50
3.5 有類型的常量 51
3.6 枚舉 52
3.7 運算符 53
3.7.1 算術運算符 53
3.7.2 關系運算符 53
3.7.3 邏輯運算符 54
3.7.4 位運算符 54
3.7.5 復合賦值運算符 55
3.7.6 運算符優先級 57
3.8 要點回顧 58
第4章 流程控制 59
視頻講解:28分鐘
4.1 條件判斷語句 59
4.1.1 if語句 59
4.1.2 switch語句 64
4.2 循環語句 68
4.2.1 for循環 68
4.2.2 for-range循環 71
4.2.3 循環嵌套 73
4.3 循環控制語句 74
4.3.1 break語句 74
4.3.2 continue語句 75
4.3.3 goto語句 77
4.4 要點回顧 77
第5章 復合數據類型 78
視頻講解:38分鐘
5.1 數組 78
5.1.1 數組的聲明 78
5.1.2 數組的初始化 79
5.1.3 數組元素的訪問 81
5.1.4 二維數組 82
5.2 切片 84
5.2.1 定義切片 85
5.2.2 len()函數和cap()函數 86
5.2.3 append()函數 87
5.2.4 copy()函數 88
5.2.5 空切片 89
5.2.6 切片的訪問 89
5.2.7 刪除切片 90
5.3 映射 91
5.3.1 定義映射 91
5.3.2 遍歷映射 93
5.3.3 獲取映射元素 94
5.3.4 刪除映射元素 94
5.4 要點回顧 95
第2篇 進階提高
第6章 函數 98
視頻講解:46分鐘
6.1 函數定義和調用 98
6.1.1 函數的定義 98
6.1.2 函數的調用 99
6.2 函數的參數 100
6.2.1 形式參數和實際參數 100
6.2.2 值傳遞和引用傳遞 102
6.2.3 可變參數 103
6.2.4 傳遞數組 104
6.2.5 傳遞切片 105
6.3 函數的返回值 105
6.3.1 返回單個值 105
6.3.2 返回多個值 107
6.4 函數的嵌套調用 109
6.5 函數變量 110
6.6 匿名函數 111
6.6.1 在定義時直接調用 112
6.6.2 將匿名函數賦值給變量 112
6.6.3 作為回調函數 113
6.7 閉包 114
6.8 遞歸函數 115
6.9 函數的延遲調用 117
6.9.1 多個defer語句的執行順序 117
6.9.2 延遲函數的參數 117
6.9.3 匿名函數的延遲調用 118
6.10 要點回顧 120
第7章 指針 121
視頻講解:20分鐘
7.1 關於指針 121
7.1.1 什麽是指針 121
7.1.2 “取地址”操作 122
7.2 指針的使用方法 123
7.2.1 聲明指針變量 123
7.2.2 初始化指針變量 123
7.2.3 空指針 125
7.2.4 獲取指針指向的變量的值 126
7.2.5 修改指針指向的變量的值 127
7.3 指針的其他應用 129
7.3.1 指針數組 129
7.3.2 指向指針的指針變量 130
7.4 要點回顧 131
第8章 結構體 132
視頻講解:26分鐘
8.1 結構體基本用法 132
8.1.1 定義結構體 132
8.1.2 實例化結構體 133
8.2 匿名成員和匿名結構體 135
8.2.1 匿名成員 135
8.2.2 匿名結構體 136
8.3 結構體的嵌套 137
8.4 構造函數 141
8.4.1 不帶參數的構造函數 141
8.4.2 帶參數的構造函數 142
8.4.3 為嵌套的結構體使用構造函數 142
8.5 方法 143
8.5.1 值接收者方法 143
8.5.2 指針接收者方法 144
8.6 要點回顧 147
第9章 接口 148
視頻講解:27分鐘
9.1 接口的聲明 148
9.2 接口的實現 149
9.3 類型斷言 150
9.4 Interface接口 152
9.5 空接口類型 155
9.5.1 使用空接口保存值 155
9.5.2 從空接口中獲取值 157
9.5.3 比較空接口保存的值 158
9.6 類型分支 159
9.7 接口的嵌套 160
9.8 要點回顧 162
第10章 錯誤處理 163
視頻講解:22分鐘
10.1 error接口類型 163
10.2 自定義錯誤信息 164
10.2.1 使用errors包中的New函數 164
10.2.2 使用error接口自定義Error()函數 165
10.2.3 使用fmt包的Errorf()函數 166
10.3 Error嵌套 168
10.3.1 基本用法 168
10.3.2 Unwrap()函數 168
10.3.3 Is()函數 169
10.3.4 As()函數 169
10.4 宕機和宕機恢復 170
10.4.1 宕機(panic) 170
10.4.2 宕機恢復(recover) 172
10.5 要點回顧 174
第11章 並發編程 175
視頻講解:31分鐘
11.1 並發概述 175
11.2 goroutine 176
11.2.1 為普通函數創建goroutine 176
11.2.2 為匿名函數創建goroutine 179
11.3 channel(通道) 180
11.3.1 通道的聲明和創建 181
11.3.2 通道的基本操作 182
11.3.3 單向通道 184
11.3.4 無緩沖的通道 185
11.3.5 有緩沖的通道 186
11.4 使用select處理通道 187
11.5 競爭狀態 188
11.6 死鎖、活鎖和飢餓 189
11.6.1 死鎖 189
11.6.2 活鎖 190
11.6.3 飢餓 190
11.7 加鎖機制 190
11.8 要點回顧 193
第3篇 高級應用
第12章 包管理 196
視頻講解:16分鐘
12.1 包的基本概念 196
12.1.1 包的導入 197
12.1.2 包的導入路徑 197
12.2 GOPATH 198
12.3 常用內置包 199
12.4 包的基本使用 201
12.4.1 package(創建包) 201
12.4.2 在代碼中使用其他代碼 202
12.5 自定義包 203
12.6 包管理工具 204
12.7 要點回顧 205
第13章 標準庫 206
視頻講解:26分鐘
13.1 IO操作 206
13.1.1 io庫 206
13.1.2 os庫 207
13.1.3 ioutil庫 208
13.1.4 bufio庫 210
13.1.5 errors庫 211
13.2 記錄日誌 212
13.2.1 log庫中的函數 212
13.2.2 標準log配置 213
13.2.3 日誌前綴配置 214
13.2.4 把日誌輸出到文件中 215
13.3 解析JSON 215
13.3.1 解碼JSON 215
13.3.2 編碼JSON 216
13.4 時間和日期 217
13.4.1 時間的獲取 217
13.4.2 操作時間的函數 219
13.4.3 時間格式化 220
13.4.4 解析格式化的時間字符串 220
13.5 要點回顧 221
第14章 編譯與測試工具 222
視頻講解:18分鐘
14.1 go build命令 222
14.2 go clean命令 224
14.3 go run命令 224
14.4 go fmt命令 225
14.5 go install命令 226
14.6 go get命令 227
14.7 go generate命令 227
14.8 go test命令 228
14.8.1 單元測試 228
14.8.2 基準測試 229
14.9 go pprof命令 230
14.10 要點回顧 230
第15章 反射 231
視頻講解:25分鐘
15.1 反射概述 231
15.1.1 reflect.TypeOf()函數 231
15.1.2 reflect.ValueOf()函數 232
15.2 反射三定律 233
15.2.1 接口變量轉反射對象 233
15.2.2 反射對象轉接口變量 234
15.2.3 修改反射對象的值 235
15.3 反射的類型與種類 237
15.4 Go語言結構體標簽 239
15.4.1 結構體標簽的使用 239
15.4.2 結構體標簽的獲取 240
15.5 通過類型信息創建實例 241
15.6 通過反射調用函數 242
15.7 要點回顧 243
第16章 MySQL數據庫編程 244
視頻講解:18分鐘
16.1 下載、安裝MySQL 244
16.1.1 下載MySQL 244
16.1.2 安裝MySQL 246
16.1.3 啟動MySQL 253
16.2 下載go-mysql驅動程序 253
16.3 操作MySQL數據庫 255
16.3.1 連接MySQL數據庫 256
16.3.2 新建數據表 257
16.3.3 插入數據 258
16.3.4 查詢數據 259
16.3.5 修改數據 261
16.3.6 刪除數據 262
16.4 要點回顧 263
第17章 文件處理 264
視頻講解:23分鐘
17.1 文本文件的寫入、追加、讀取操作 264
17.2 二進制文件的寫入、讀取操作 267
17.2.1 gob格式 267
17.2.2 自定義二進制格式 269
17.3 JSON文件的寫入、讀取操作 271
17.4 XML文件的寫入、讀取操作 273
17.5 zip文件的寫入、讀取操作 275
17.6 文件鎖操作 277
17.7 要點回顧 279
第18章 網絡編程 280
視頻講解:15分鐘
18.1 Socket編程 280
18.1.1 什麽是Socket 281
18.1.2 Dial()函數 281
18.2 TCP Socket 282
18.2.1 建立TCP連接 283
18.2.2 實現交互通信 285
18.3 UDP Socket 287
18.3.1 UDP服務器端 287
18.3.2 UDP客戶端 288
18.4 HTTP編程 289
18.4.1 HTTP客戶端 289
18.4.2 HTTP服務端 290
18.5 要點回顧 291
第4篇 項目實戰
第19章 Go語言在爬蟲中的應用 294
視頻講解:21分鐘
19.1 需求分析 294
19.2 程序設計 294
19.2.1 程序目標 294
19.2.2 功能結構 295
19.2.3 業務流程 295
19.3 技術準備—go-colly框架 296
19.3.1 go-colly框架的特性 296
19.3.2 go-colly框架的下載 296
19.3.3 go-colly框架的實現過程 297
19.3.4 go-colly框架的應用實例 298
19.4 抓取指定連接的網頁內容 300
19.5 將抓取的網頁內容存儲在文件中 301
19.6 把爬蟲程序設置成Web服務 303
19.7 要點回顧 306