Go語言極簡一本通:零基礎入門到項目實戰(zhàn)
定 價:99 元
- 作者:歡喜
- 出版時間:2021/3/1
- ISBN:9787121407482
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP312
- 頁碼:256
- 紙張:
- 版次:01
- 開本:16開
本書是一本Go語言入門書,全書共分為三部分。第一部分講解Go語言基礎知識,包括變量與簡單類型、數(shù)組、切片、流程控制、字典、函數(shù)、結構體與方法、接口等,可以幫助讀者快速掌握Go語言的基本程序結構。第二部分講解Go語言高效并發(fā)相關知識,包括協(xié)程與通道、并發(fā)資源、包管理和測試等,讓讀者對Go語言層面的并發(fā)支持有更深入的理解。第三部分講解Go語言項目實戰(zhàn),包括Gin框架、生活點評項目實戰(zhàn)、賬戶管理系統(tǒng)實戰(zhàn),以及OAuth 2.0的授權協(xié)議等。通過實戰(zhàn),把前面講解的知識點運用起來,幫助讀者快速上手,積累項目經(jīng)驗。
歡 喜,微信公眾號 “面向加薪學習” 的作者,B站 “面向加薪學習”的作者, “GoCn” 小組成員,在社區(qū)連載了一系列 Go 語言相關的技術文章,并在B站發(fā)布了一系列Go語言相關視頻,均廣受歡迎。擁有多年國內一線互聯(lián)網(wǎng)公司從業(yè)經(jīng)驗,主導全棧項目,擅長Go、Java、Vue、移動開發(fā)(Flutter)和小程序(Taro),擁有豐富的大型網(wǎng)站架構經(jīng)驗。
第一部分 基礎知識
第1章 起步 1
1.1 源代碼與程序 1
1.2 變量的命名 2
1.3 指針 4
1.4 包和文件 5
1.5 變量的生命周期 6
1.6 作用域 7
第2章 變量與簡單類型 9
2.1 運行hello_world.go 9
2.2 變量 10
2.3 字符串 11
2.3.1 修改字符串的大小寫 11
2.3.2 合并(拼接)字符串 12
2.3.3 使用制表符或換行符添加空白 13
2.3.4 刪除空格 13
2.4 數(shù)字 14
2.4.1 整數(shù) 15
2.4.2 浮點數(shù) 15
2.4.3 使用strconv.Itoa方法避免類型錯誤 15
2.5 注釋 16
2.6 小結 17
第3章 數(shù)組 18
3.1 數(shù)組簡介 18
3.2 初始化數(shù)組元素的3種方式 19
3.3 訪問數(shù)組元素 20
3.4 索引是從0而不是從1開始的 21
3.5 使用數(shù)組中的各個值 21
3.6 遍歷數(shù)組 22
3.7 循環(huán) 23
3.8 修改數(shù)組中的元素 24
3.9 使用列表時應避免索引錯誤 24
3.10 小結 25
第4章 切片 26
4.1 切片簡介 26
4.1.1 創(chuàng)建切片 27
4.1.2 訪問切片元素 30
4.1.3 遍歷切片元素 31
4.1.4 復制切片 32
4.2 修改、添加和刪除元素 33
4.2.1 修改切片元素 34
4.2.2 在切片中添加元素 34
4.2.3 從切片中刪除元素 36
4.3 使用切片時應避免索引錯誤 37
4.4 遍歷切片時容易犯的錯誤 38
4.5 小結 39
第5章 流程控制 41
5.1 if語句 41
5.2 條件測試 42
5.2.1 檢查是否相等 42
5.2.2 比較數(shù)字 43
5.2.3 檢查多個條件 43
5.2.4 檢查在切片中是否包含特定值 44
5.2.5 布爾表達式 44
5.2.6 if-else 結構 45
5.3 switch語句 46
5.4 循環(huán)語句 49
5.5 小結 51
第6章 字典 52
6.1 字典簡介 52
6.2 創(chuàng)建字典 54
6.3 使用字典 55
6.3.1 訪問字典中的值 56
6.3.2 添加鍵值對 57
6.3.3 修改字典中的值 57
6.3.4 刪除鍵值對 58
6.4 遍歷字典 59
6.4.1 在字典中嵌入切片 59
6.4.2 在字典中嵌入字典 61
6.5 避免遍歷 61
6.6 小結 63
第7章 函數(shù) 64
7.1 定義函數(shù) 64
7.1.1 向函數(shù)傳遞信息 67
7.1.2 實際參數(shù)和形式參數(shù) 67
7.1.3 位置實參 68
7.1.4 傳遞數(shù)組 69
7.1.5 傳遞切片 70
7.1.6 避免實參錯誤 71
7.2 返回值 71
7.2.1 返回簡單值 71
7.2.2 返回字典 72
7.3 返回多個值 72
7.4 函數(shù)變量 75
7.5 匿名函數(shù) 78
7.6 閉包 79
7.7 變長函數(shù) 81
7.8 延遲函數(shù)調用 82
7.9 panic 83
7.10 recover 84
7.11 小結 85
第8章 結構體與方法 86
8.1 結構體概述 86
8.2 結構體的使用 88
8.3 匿名成員與結構體嵌套 89
8.4 結構體與JSON 91
8.5 方法 93
8.6 指針接收者方法 94
8.7 實參接收者type與*type 96
8.8 值方法與指針方法的區(qū)別 98
8.9 方法與表達式 100
8.10 小結 100
第9章 接口 102
9.1 接口的定義及使用 102
9.2 非侵入式接口 104
9.3 使用指針接收者實現(xiàn)接口 106
9.4 接口的嵌套 107
9.5 接口值 110
9.6 error接口 112
9.7 類型斷言 113
9.8 類型分支 114
9.9 動態(tài)類型、動態(tài)值和靜態(tài)類型 114
9.10 小結 118
第二部分 高效并發(fā)
第10章 協(xié)程與通道 119
10.1 并發(fā) 119
10.2 協(xié)程并發(fā)模型 121
10.3 goroutine(協(xié)程)的使用 124
10.4 channel(通道) 125
10.5 channel進階 126
10.6 單向channel 129
10.7 無緩沖channel 130
10.8 緩沖channel 131
10.9 select 132
10.10 關閉channel 135
10.11 小結 136
第11章 并發(fā)資源 137
11.1 競態(tài) 137
11.2 sync.Mutex與sync.RWMutex 139
11.3 條件變量 146
11.4 原子操作 149
11.5 WaitGroup類型與Once類型 152
11.6 context.Context類型 155
11.7 小結 159
第12章 包管理 161
12.1 go mod 161
12.2 go mod中的命令 162
12.3 小結 164
第13章 測試 165
第14章 反射 169
14.1 反射簡介 169
14.2 動態(tài)調用無參方法 170
14.3 動態(tài)調用有參方法 170
14.4 動態(tài)struct tag解析 171
14.5 對類型進行轉換和賦值 172
14.6 使用Kind與switch處理不同分支 174
14.7 判斷是否實現(xiàn)了某接口 175
第三部分 項目實戰(zhàn)
第15章 Gin框架 177
15.1 HTTP簡介 177
15.2 Gin框架簡介 183
15.3 RESTful 184
15.4 路由參數(shù) 185
15.5 URL查詢參數(shù)的獲取 186
15.6 接收數(shù)組和map 187
15.7 獲取Form表單參數(shù) 188
15.8 JSON渲染輸出 190
第16章 生活點評項目實戰(zhàn) 193
16.1 總體需求分析 193
16.2 開發(fā)精要 196
16.3 接口設計 197
16.4 餐廳詳情模塊 198
16.5 數(shù)據(jù)庫訪問層 200
16.6 服務層 203
16.7 路由和方法 204
16.8 團購下單模塊 204
16.9 數(shù)據(jù)庫訪問層 205
16.10 團購下單——服務層 205
16.11 團購下單——路由和方法 206
16.12 小結 208
第17章 賬戶管理系統(tǒng)實戰(zhàn) 209
17.1 啟動一個簡單的RESTful服務器 209
17.2 Viper 211
17.3 日志追蹤 217
17.4 定義錯誤碼 220
17.5 創(chuàng)建賬戶 224
17.6 刪除賬戶 228
17.7 更新賬戶 229
17.8 賬戶列表 231
17.9 根據(jù)賬戶名稱查詢用戶信息 234
17.10 OAuth 2.0簡介 236
17.11 OAuth 2.0 的四種授權模式 237