Go語言從入門到項(xiàng)目實(shí)戰(zhàn)(視頻版)
定 價:108 元
- 作者:劉瑜
- 出版時間:2022/8/1
- ISBN:9787121439766
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP312
- 頁碼:368
- 紙張:
- 版次:01
- 開本:16開
Go語言是近幾年廣受關(guān)注的一門新興編程語言,在設(shè)計(jì)之初就致力于解決C語言的低效問題,以及C++語言的晦澀、難用等缺陷。Go語言吸收了C、C++強(qiáng)大的開發(fā)功能優(yōu)勢,繼承了C、C++的編程風(fēng)格,被廣泛應(yīng)用于構(gòu)建數(shù)字基礎(chǔ)設(shè)施類軟件,以及圖形/圖像處理、移動應(yīng)用、人工智能、機(jī)器學(xué)習(xí)等領(lǐng)域,廣受國內(nèi)外大型IT公司的推崇和關(guān)注。 本書除了講解Go語言的基本開發(fā)知識,還提供了3個完整的實(shí)戰(zhàn)項(xiàng)目及131個源碼示例。另外,本書提供對應(yīng)的練習(xí)與實(shí)驗(yàn),方便讀者對所學(xué)知識進(jìn)行鞏固和檢驗(yàn)。 本書適合高等院校學(xué)生閱讀,適合程序員自學(xué),也適合培訓(xùn)機(jī)構(gòu)使用。
目錄
第1部分 Go語言編程基礎(chǔ)
第1章 Go語言入門知識 2
1.1 Go語言簡介 2
1.1.1 Go語言的產(chǎn)生 2
1.1.2 Go語言的特點(diǎn)與優(yōu)勢 3
1.2 Go語言開發(fā)工具的安裝 5
1.2.1 Windows下的安裝 6
1.2.2 Linux下的安裝 10
1.2.3 macOS下的安裝 13
1.3 第一個Go語言程序:Hello三酷貓 13
1.4 安裝和使用集成開發(fā)環(huán)境 16
1.4.1 集成開發(fā)環(huán)境的安裝 16
1.4.2 項(xiàng)目的創(chuàng)建、編譯和運(yùn)行 19
1.4.3 代碼的出錯提示及調(diào)試 22
1.4.4 代碼風(fēng)格約定 25
1.5 關(guān)鍵字和保留字 26
1.6 為代碼添加注釋 27
1.6.1 單行注釋 27
1.6.2 多行注釋 28
1.7 練習(xí)與實(shí)驗(yàn) 29
第2章 基礎(chǔ)語法 30
2.1 聲明 30
2.2 常量與變量 30
2.2.1 常量 31
2.2.2 變量 32
2.2.3 作用域 33
2.3 基本數(shù)據(jù)類型 34
2.3.1 整型 34
2.3.2 浮點(diǎn)型 36
2.3.3 復(fù)數(shù)型 38
2.3.4 布爾型 39
2.3.5 字符串型 39
2.4 運(yùn)算符及優(yōu)先級 42
2.4.1 算術(shù)運(yùn)算符 42
2.4.2 關(guān)系運(yùn)算符 43
2.4.3 邏輯運(yùn)算符 44
2.4.4 位運(yùn)算符 45
2.4.5 賦值運(yùn)算符 47
2.4.6 指針運(yùn)算符 49
2.4.7 優(yōu)先級 49
2.4.8 案例:三酷貓求相加和 50
2.5 練習(xí)與實(shí)驗(yàn) 52
第3章 高級數(shù)據(jù)類型 53
3.1 指針類型 53
3.1.1 指針的概念 54
3.1.2 指針變量的聲明 54
3.1.3 指針變量的賦值 55
3.1.4 訪問指針變量所表示的變量的值 55
3.1.5 空(nil)指針 56
3.1.6 指向指針的指針變量 56
3.1.7 案例:解答三酷貓關(guān)于指針的困惑 57
3.2 數(shù)組類型 58
3.2.1 數(shù)組的概念 59
3.2.2 數(shù)組的聲明與初始化 59
3.2.3 訪問數(shù)組中的元素 62
3.2.4 多維數(shù)組 62
3.2.5 案例:三酷貓計(jì)算平均溫度 63
3.3 切片類型 65
3.3.1 切片的概念 65
3.3.2 切片的聲明與初始化 65
3.3.3 空(nil)切片 68
3.3.4 訪問切片中的元素 68
3.3.5 多維切片 69
3.3.6 切片的append()函數(shù) 69
3.3.7 切片的copy()函數(shù) 72
3.4 集合類型 73
3.4.1 集合的概念 73
3.4.2 集合的聲明與初始化 73
3.4.3 集合中元素的檢索 75
3.4.4 向集合中添加、刪除和修改元素 76
3.5 結(jié)構(gòu)體類型 77
3.5.1 結(jié)構(gòu)體的概念及特點(diǎn) 77
3.5.2 結(jié)構(gòu)體的聲明 77
3.5.3 結(jié)構(gòu)體的使用 78
3.6 練習(xí)與實(shí)驗(yàn) 80
第4章 流程控制語法 81
4.1 分支結(jié)構(gòu) 81
4.1.1 if語句 81
4.1.2 if…else…結(jié)構(gòu) 83
4.1.3 多分支結(jié)構(gòu) 83
4.2 switch…case…分支結(jié)構(gòu) 84
4.3 循環(huán)結(jié)構(gòu) 86
4.3.1 for循環(huán)的使用 86
4.3.2 多層循環(huán)結(jié)構(gòu) 89
4.4 跳轉(zhuǎn)控制語句 90
4.4.1 break語句 90
4.4.2 continue語句 91
4.4.3 goto語句 92
4.5 for-range結(jié)構(gòu) 93
4.5.1 遍歷數(shù)組與切片 93
4.5.2 遍歷集合 94
4.5.3 遍歷字符串 94
4.6 案例:三酷貓背九九乘法表 95
4.7 案例:三酷貓學(xué)算法之冒泡排序 95
4.8 練習(xí)與實(shí)驗(yàn) 96
第5章 函數(shù) 98
5.1 函數(shù)的聲明 98
5.1.1 函數(shù)的聲明格式 99
5.1.2 函數(shù)的參數(shù) 99
5.1.3 可變參數(shù) 101
5.1.4 函數(shù)的返回值 102
5.2 函數(shù)的調(diào)用 103
5.2.1 函數(shù)的調(diào)用格式 103
5.2.2 值傳遞與引用傳遞 104
5.2.3 案例:三酷貓識別數(shù)據(jù)類型 105
5.3 遞歸函數(shù) 106
5.4 匿名函數(shù) 107
5.4.1 匿名函數(shù)的聲明 107
5.4.2 匿名函數(shù)的調(diào)用 108
5.4.3 將匿名函數(shù)賦值給變量 108
5.4.4 使用匿名函數(shù)實(shí)現(xiàn)回調(diào) 108
5.4.5 案例:三酷貓的下載“神器” 109
5.5 閉包 110
5.6 函數(shù)的延遲調(diào)用 112
5.6.1 延遲調(diào)用的使用和特點(diǎn) 112
5.6.2 使用延遲調(diào)用的注意事項(xiàng) 113
5.7 Go語言的異常處理 115
5.7.1 運(yùn)行時宕機(jī) 116
5.7.2 宕機(jī)時恢復(fù) 117
5.8 案例:三酷貓的面積計(jì)算器 118
5.9 練習(xí)與實(shí)驗(yàn) 119
第6章 結(jié)構(gòu)體 120
6.1 類型 120
6.1.1 自定義類型 121
6.1.2 自定義別名 121
6.2 結(jié)構(gòu)體的基本使用 122
6.2.1 結(jié)構(gòu)體的聲明及實(shí)例化 122
6.2.2 匿名結(jié)構(gòu)體 125
6.2.3 內(nèi)存中的結(jié)構(gòu)體變量 126
6.2.4 聲明并實(shí)例化指針類型的結(jié)構(gòu)體變量 127
6.3 構(gòu)造函數(shù)與方法 128
6.3.1 使用結(jié)構(gòu)體實(shí)現(xiàn)構(gòu)造函數(shù) 128
6.3.2 方法與接收者 130
6.4 結(jié)構(gòu)體的嵌套 133
6.4.1 嵌套結(jié)構(gòu)體 133
6.4.2 嵌套匿名結(jié)構(gòu)體 134
6.4.3 使用結(jié)構(gòu)體實(shí)現(xiàn)繼承 135
6.5 案例:三酷貓開銀行 136
6.6 練習(xí)與實(shí)驗(yàn) 138
第7章 接口 140
7.1 接口概述 140
7.2 接口的定義和使用 141
7.2.1 接口的定義 141
7.2.2 接口的實(shí)現(xiàn) 142
7.2.3 調(diào)用接口方法 145
7.2.4 值接收者與指針接收者 146
7.2.5 實(shí)現(xiàn)多個接口 147
7.2.6 接口的嵌套 149
7.3 空接口的定義和使用 150
7.3.1 空接口的定義 150
7.3.2 空接口的使用 151
7.4 類型斷言 152
7.5 練習(xí)與實(shí)驗(yàn) 153
第8章 包 154
8.1 包的聲明與導(dǎo)入 154
8.1.1 包的聲明 154
8.1.2 包的導(dǎo)入 155
8.2 Go應(yīng)用程序的啟動流程 159
8.3 創(chuàng)建包 160
8.4 Go語言中的常用內(nèi)置包 161
8.4.1 文本格式化輸出:fmt包 162
8.4.2 磁盤文件讀/寫:os包 171
8.4.3 網(wǎng)絡(luò)服務(wù):net包 180
8.4.4 JSON格式工具包:json包 185
8.4.5 時間和日期:time包 188
8.4.6 日志服務(wù):log包 192
8.4.7 類型轉(zhuǎn)換:strconv包 195
8.5 案例:三酷貓的文件夾遞歸復(fù)制工具 199
8.6 案例:三酷貓的二維碼圖片生成器 201
8.7 練習(xí)與實(shí)驗(yàn) 202
第9章 并發(fā)、并行與協(xié)程 204
9.1 概念 204
9.1.1 進(jìn)程與線程 204
9.1.2 并發(fā)與并行 205
9.1.3 協(xié)程與線程 205
9.2 Go語言協(xié)程:Goroutine 205
9.2.1 使用Goroutine的優(yōu)勢 205
9.2.2 創(chuàng)建并啟動單個Goroutine 206
9.2.3 創(chuàng)建并啟動多個Goroutine 209
9.3 Go語言調(diào)度模型:GPM 210
9.3.1 任務(wù)調(diào)度發(fā)展簡史 210
9.3.2 Go語言中的協(xié)程 211
9.3.3 GPM設(shè)計(jì)思想 211
9.4 runtime包 213
9.4.1 獲取當(dāng)前的操作系統(tǒng)類型和CPU類型 213
9.4.2 獲取和設(shè)置CPU核心數(shù)量 214
9.4.3 讓出資源 215
9.4.4 終止當(dāng)前協(xié)程 216
9.5 在協(xié)程任務(wù)之間傳遞數(shù)據(jù):Channel 216
9.5.1 通道類型和基本使用 217
9.5.2 無緩沖(同步)通道的使用 218
9.5.3 帶緩沖通道的使用 219
9.5.4 判斷通道是否關(guān)閉 220
9.5.5 單向通道的構(gòu)建 221
9.6 select結(jié)構(gòu) 221
9.7 加鎖和原子操作 223
9.7.1 互斥鎖 224
9.7.2 讀/寫互斥鎖 224
9.7.3 原子操作 226
9.8 定時器 228
9.8.1 Timer 228
9.8.2 Ticker 230
9.9 案例:三酷貓篩選0~1000范圍內(nèi)的素?cái)?shù) 230
9.10 練習(xí)與實(shí)驗(yàn) 232
第10章 反射 234
10.1 使用反射訪問變量 234
10.1.1 獲取變量的類型 235
10.1.2 獲取變量的值 236
10.1.3 反射值的非空和有效性判定 237
10.2 使用反射訪問指針表示的變量 237
10.3 使用反射訪問結(jié)構(gòu)體 238
10.4 使用反射修改值 240
10.5 使用反射調(diào)用函數(shù) 243
10.6 使用反射創(chuàng)建變量 244
10.7 練習(xí)與實(shí)驗(yàn) 244
第11章 命令行工具 246
11.1 編譯命令go build 246
11.2 清理命令go clean 247
11.3 運(yùn)行命令go run 248
11.4 代碼格式化命令gofmt 249
11.5 編譯并安裝命令go install 250
11.6 獲取包命令go get 250
11.7 練習(xí)與實(shí)驗(yàn) 251
第12章 數(shù)據(jù)庫操作 252
12.1 MySQL 252
12.1.1 MySQL準(zhǔn)備 253
12.1.2 增刪改查(CRUD)操作 259
12.1.3 事務(wù)(Transaction)操作 262
12.2 Redis 263
12.2.1 Redis準(zhǔn)備 264
12.2.2 Redis數(shù)據(jù)類型 267
12.2.3 使用Go語言對Redis進(jìn)行操作 268
12.3 練習(xí)與實(shí)驗(yàn) 271
第2部分 Go語言項(xiàng)目實(shí)戰(zhàn)
第13章 開發(fā)矩陣計(jì)算庫 274
13.1 線性代數(shù)基礎(chǔ)與項(xiàng)目功能設(shè)計(jì) 274
13.1.1 線性代數(shù)知識的簡單回顧 274
13.1.2 項(xiàng)目功能設(shè)計(jì) 276
13.2 項(xiàng)目初始化與“鴨子類型” 277
13.2.1 初始化項(xiàng)目 277
13.2.2 定義matrix包的數(shù)據(jù)類型 278
13.2.3 面向?qū)ο笈cGo語言中的“鴨子類型” 278
13.3 矩陣計(jì)算包matrix的開發(fā) 281
13.3.1 定義matrix包中的接口 281
13.3.2 實(shí)現(xiàn)matrix包中的方法 282
13.3.3 測試matrix包 288
13.3.4 在其他項(xiàng)目中引用matrix包 292
13.4 項(xiàng)目總結(jié) 294
第14章 STL文件解析和MongoDB存儲 295
14.1 STL文件簡介與項(xiàng)目設(shè)計(jì) 295
14.1.1 項(xiàng)目功能需求設(shè)定 298
14.1.2 項(xiàng)目實(shí)現(xiàn)思路 299
14.2 開發(fā)utils包 299
14.2.1 錯誤處理文件handle.go 300
14.2.2 文件操作文件fileoper.go 301
14.3 開發(fā)用于模型文件處理的stl包 302
14.3.1 定義數(shù)據(jù)類型:type.go文件 303
14.3.2 解析STL文件數(shù)據(jù):stl.go文件 304
14.3.3 安裝和配置MongoDB 307
14.3.4 操作數(shù)據(jù)庫:db.go文件 310
14.4 開發(fā)路由函數(shù)的handler包 314
14.4.1 定義響應(yīng)數(shù)據(jù)格式類型的type.go文件 314
14.4.2 用于測試服務(wù)器程序連通性的ping.go文件 315
14.4.3 處理STL數(shù)據(jù)請求的stl.go文件 316
14.5 開發(fā)項(xiàng)目入口文件main.go并測試項(xiàng)目 321
14.5.1 開發(fā)main.go文件 322
14.5.2 使用Postman測試整個項(xiàng)目 324
14.6 項(xiàng)目總結(jié) 327
第15章 開發(fā)文件加密和解密程序 328
15.1 實(shí)現(xiàn)思路及功能設(shè)計(jì) 328
15.1.1 加密和解密過程的實(shí)現(xiàn)思路 329
15.1.2 功能設(shè)計(jì) 331
15.2 加密和解密程序的設(shè)計(jì)與實(shí)現(xiàn) 331
15.2.1 初始化項(xiàng)目 332
15.2.2 開發(fā)項(xiàng)目的utils包 332
15.2.3 對utils包中的關(guān)鍵函數(shù)進(jìn)行測試 339
15.3 開發(fā)加密、解密和散列值計(jì)算的可執(zhí)行程序 340
15.3.1 實(shí)現(xiàn)加密程序 340
15.3.2 實(shí)現(xiàn)解密程序 342
15.3.3 實(shí)現(xiàn)獨(dú)立的散列值計(jì)算程序 343
15.4 項(xiàng)目總結(jié) 346
附錄A 使用fmt.printf()函數(shù)格式化字符串 347
附錄B ASCII編碼 348
附錄C 本書配套代碼文件 353