本書涵蓋從Go語言入門到Go Web開發(fā)高級應用所需的核心知識、方法和技巧,共分4篇。第1篇Go語言入門,介紹Go語言的基礎語法,即使是沒有Go語言基礎的讀者也可以學習本書。第2篇Go Web基礎入門,介紹能使讀者快速掌握用Go語言進行Web開發(fā)的基礎知識。第3篇Go Web高級應用,教會讀者用Go語言快速開發(fā)各種Web應用。第4篇Go Web項目實戰(zhàn),通過實例介紹了開發(fā)一個B2C電子商務系統(tǒng)的全過程,并用Docker部署Go Web應用。本書可作為Go語言初學者、Web開發(fā)工程師的自學用書,也可作為培訓機構和相關院校的教材。
廖顯東高級軟件架構師,全棧開發(fā)者,AI算法專家:技術極客,開源愛好者。專注于計算機前沿技術的研究和實踐。有多年軟件開發(fā)與團隊管理經(jīng)驗,精通Java、JavaScript、C/C /C#、Python、PHP等開發(fā)語言。對Go語言、Rust語言等流行開發(fā)語言有深入實踐和研究。對大型電子商務系統(tǒng)開發(fā)、高并發(fā)架構、分布式架構、算法及應用、微服務、大數(shù)據(jù)、人工智能算法、Web3.0、AIGC、ChatGPT、Midjoumey、元宇宙等計算機前沿技術領域有深入實踐和研究。
第1篇 Go語言入門
//
第1章 Go基礎入門2
1.1 安裝Go2
1.2 【實戰(zhàn)】開啟Go的第一個程序4
1.2.1 聲明包5
1.2.2 導入包5
1.2.3 main()函數(shù)6
1.3 Go基礎語法與使用7
1.3.1 基礎語法7
1.3.2 變量10
1.3.3 常量13
1.3.4 運算符15
1.3.5 流程控制語句16
1.4 Go數(shù)據(jù)類型26
1.4.1 布爾類型27
1.4.2 數(shù)字類型29
1.4.3 字符串類型29
1.4.4 指針類型34
1.4.5 復合類型35
1.5 函數(shù)44
1.5.1 聲明函數(shù)44
1.5.2 函數(shù)參數(shù)45
1.5.3 匿名函數(shù)47
1.5.4 迭代器函數(shù)49
1.5.5 defer延遲語句50
1.6 Go面向對象編程52
1.6.1 封裝52
1.6.2 繼承54
1.6.3 多態(tài)56
1.7 接口57
1.7.1 接口的定義57
1.7.2 接口的賦值58
1.7.3 接口的查詢61
1.7.4 接口的組合62
1.8 反射63
1.8.1 反射的定義63
1.8.2 反射的三大法則64
1.9 泛型65
1.10 goroutine簡介68
1.11 單元測試69
1.12 模塊系統(tǒng)72
1.13 Go編譯與工具75
1.13.1 編譯(go build)75
1.13.2 編譯后運行(go run)81
1.13.3 編譯并安裝(go install)81
1.13.4 獲取代碼(go get)82
//
第2篇 Go Web基礎入門
//
第2章 Go Web開發(fā)基礎86
2.1 【實戰(zhàn)】開啟Go Web的第1個程序86
2.2 Web應用程序運行原理簡介87
2.2.1 Web基本原理87
2.2.2 Web應用程序的組成88
2.3 【實戰(zhàn)】初探Go語言的net/http包90
2.3.1 創(chuàng)建簡單的服務器端91
2.3.2 創(chuàng)建簡單的客戶端92
2.4 使用Go語言的html/template包94
2.4.1 了解模板的原理94
2.4.2 使用html/template包95
第3章 接收和處理Go Web請求101
3.1 【實戰(zhàn)】創(chuàng)建一個簡單的Go Web服務器101
3.2 接收請求103
3.2.1 ServeMux和DefaultServeMux103
3.2.2 處理器和處理器函數(shù)111
3.2.3 串聯(lián)多個處理器和處理器函數(shù)114
3.2.4 生成HTML表單115
3.3 處理請求117
3.3.1 了解Request結構體117
3.3.2 請求URL118
3.3.3 請求頭119
3.3.4 請求體120
3.3.5 處理HTML表單121
3.3.6 了解ResponseWriter的原理124
3.4 了解session和cookie129
3.4.1 session和cookie簡介129
3.4.2 Go與cookie132
3.4.3 Go使用session134
//
第4章 用Go訪問數(shù)據(jù)庫139
4.1 MySQL的安裝及使用139
4.1.1 MySQL簡介139
4.1.2 MySQL的安裝139
4.1.3 用Go訪問MySQL140
4.2 Redis的安裝及使用146
4.2.1 Redis的安裝146
4.2.2 Go訪問Redis147
4.3 MongoDB的安裝及使用151
4.3.1 MongoDB的安裝151
4.3.2 Go訪問MongoDB152
4.4 Go的常見ORM庫159
4.4.1 什么是ORM159
4.4.2 Gorm(性能極好的ORM庫)的安裝及使用160
4.4.3 Beego ORM?D?DGo語言的ORM框架164
//
第3篇 Go Web高級應用
//
第5章 Go高級網(wǎng)絡編程170
5.1 Go Socket編程170
5.1.1 什么是Socket170
5.1.2 客戶端net.Dial()函數(shù)的使用173
5.1.3 客戶端net.DialTCP()函數(shù)的使用174
5.1.4 UDP Socket的使用177
5.1.5 【實戰(zhàn)】用Go Socket實現(xiàn)一個簡易的聊天程序180
5.2 Go RPC編程184
5.2.1 什么是RPC184
5.2.2 Go RPC的應用185
5.3 微服務191
5.3.1 什么是微服務191
5.3.2 【實戰(zhàn)】用gRPC框架構建一個簡易的微服務194
//
第6章 Go文件處理200
6.1 操作目錄與文件200
6.1.1 操作目錄200
6.1.2 創(chuàng)建文件201
6.1.3 打開與關閉文件201
6.1.4 讀寫文件202
6.1.5 移動與重命名文件203
6.1.6 刪除文件203
6.1.7 復制文件204
6.1.8 修改文件權限204
6.1.9 文件鏈接206
6.1.10 嵌入靜態(tài)文件206
6.2 處理XML文件208
6.2.1 解析XML文件208
6.2.2 生成XML文件210
6.3 處理JSON文件212
6.3.1 讀取JSON文件212
6.3.2 生成JSON文件214
6.4 處理正則表達式215
6.4.1 獲取正則對象215
6.4.2 匹配檢測216
6.4.3 查找字符和字符串216
6.4.4 查找匹配位置217
6.4.5 替換字符218
6.4.6 分割字符串219
6.5 【實戰(zhàn)】從數(shù)據(jù)庫中導出一個CSV文件220
//
第7章 Go并發(fā)編程223
7.1 并發(fā)與并行223
7.2 進程、線程和協(xié)程225
7.3 Go并發(fā)模型簡介227
7.4 用goroutine和通道實現(xiàn)并發(fā)228
7.4.1 goroutine簡介228
7.4.2 通道229
7.5 用sync包實現(xiàn)并發(fā)233
7.5.1 競態(tài)233
7.5.2 互斥鎖234
7.5.3 讀寫互斥鎖235
7.5.4 sync.Once結構體236
7.5.5 同步等待組sync.WaitGroup238
7.5.6 競態(tài)檢測器240
7.5.7 sync/atomic 包擴展241
7.6 用Go開發(fā)并發(fā)的Web應用243
7.6.1 【實戰(zhàn)】開發(fā)一個自增整數(shù)生成器243
7.6.2 【實戰(zhàn)】開發(fā)一個并發(fā)的消息發(fā)送器243
7.6.3 【實戰(zhàn)】開發(fā)一個多路合并計算器244
7.6.4 【實戰(zhàn)】用select關鍵字創(chuàng)建多通道監(jiān)聽器245
7.6.5 【實戰(zhàn)】用無緩沖通道阻塞主線247
7.6.6 【實戰(zhàn)】用篩法求素數(shù)248
7.6.7 【實戰(zhàn)】創(chuàng)建隨機數(shù)生成器249
7.6.8 【實戰(zhàn)】創(chuàng)建一個定時器250
7.6.9 【實戰(zhàn)】開發(fā)一個并發(fā)的Web爬蟲251
//
第8章 Go RESTful API開發(fā)255
8.1 什么是RESTful API255
8.2 Go流行Web框架的使用257
8.2.1 為什么要用框架257
8.2.2 Gin框架的使用257
8.2.3 Beego框架的使用264
8.3 【實戰(zhàn)】用Gin框架開發(fā)RESTful API276
8.3.1 路由設計276
8.3.2 數(shù)據(jù)表設計276
8.3.3 模型代碼編寫276
8.3.4 邏輯代碼編寫277
8.4 【實戰(zhàn)】用Go開發(fā)OAuth 2.0接口279
8.4.1 OAuth 2.0簡介279
8.4.2 用Go開發(fā)OAuth 2.0接口的示例281
//
第4篇 Go Web項目實戰(zhàn)
//
第9章 【實戰(zhàn)】開發(fā)一個B2C電子商務系統(tǒng)286
9.1 需求分析286
9.2 系統(tǒng)設計287
9.2.1 確定系統(tǒng)架構287
9.2.2 制定系統(tǒng)流程288
9.3 設計軟件架構289
9.4 設計數(shù)據(jù)庫與數(shù)據(jù)表290
9.5 搭建系統(tǒng)基礎架構291
9.5.1 創(chuàng)建公共文件291
9.5.2 創(chuàng)建模型295
9.6 前臺模塊開發(fā)299
9.6.1 首頁模塊開發(fā)299
9.6.2 注冊登錄模塊開發(fā)306
9.6.3 用戶中心模塊開發(fā)314
9.6.4 購物車模塊開發(fā)317
9.6.5 收銀臺模塊開發(fā)320
9.6.6 支付模塊開發(fā)322
9.7 后臺模塊開發(fā)325
9.7.1 登錄模塊開發(fā)326
9.7.2 商品模塊開發(fā)326
//
第10章 用Docker部署Go Web應用329
10.1 了解Docker組件及原理329
10.1.1 什么是Docker329
10.1.2 為什么用Docker330
10.1.3 Docker引擎331
10.1.4 Docker構架332
10.1.5 Docker核心概念332
10.2 安裝Docker333
10.3 【實戰(zhàn)】用Docker運行一個Go Web應用335
10.3.1 創(chuàng)建Go Web應用335
10.3.2 用Docker運行Go Web應用335
10.4 【實戰(zhàn)】通過Docker-Compose部署容器集群336
10.4.1 Docker-Compose簡介337
10.4.2 通過Docker-Compose實戰(zhàn)部署337
10.5 【實戰(zhàn)】將Docker容器推送至服務器339
10.5.1 在Docker Hub官網(wǎng)注冊賬號339
10.5.2 同步本地和Docker Hub的標簽(tag)339
10.5.3 推送鏡像到Docker Hub340
10.5.4 訪問Docker Hub鏡像340
10.5.5 使用發(fā)布的Docker Hub鏡像341