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