Go Web 編程實戰派 — 從入門到精通
內容描述
本書涵蓋從Go語言入門到Go Web開發高手所需的核心知識、方法和技巧,共分4篇。第1篇“Go語言入門”,介紹Go語言的基礎語法,既使沒有Go語言基礎的讀者也可以學習本書。第2篇“Go Web基礎入門”,包括3章:Go Web開發基礎、接收和處理Go Web請求、用Go訪問數據庫。本篇能使讀者快速掌握用Go語言進行Web開發的基礎知識。第3篇“Go Web高級應用”,包括4章:Go高級網絡編程、Go文件處理、Go並發編程、Go RESTful API接口開發。本篇能使讀者用Go語言快速開發各種Web應用。第4篇“Go Web項目實戰”,包括2章:【實戰】開發一個B2C電子商務系統、【實戰】用Docker部署Go Web應用。本篇通過實例介紹了開發一個B2C電子商務系統的全過程,包括開發商品展示、購物車、結算、支付等模塊的詳細講解,讓讀者真正瞭解大型B2C電子商務系統的架構原理及實現方法,並開放了源代碼;用Docker實戰部署Go Web應用,幫助讀者向Go Web開發“精通”級別邁進。本書可作為Go語言初學者、Web開發工程師的自學用書,也可作為培訓機構和相關院校的教材。
目錄大綱
第1篇Go語言入門
第1章Go基礎入門2
1.1安裝Go 2
1.2 【實戰】開啟Go的**個程序5
1.3 Go基礎語法與使用8
1.4 Go數據類型29
1.5函數52
1.6 Go面向對象編程63
1.7接口68
1.8反射75
1.9 goroutine簡介80
1.10單元測試81
1.11 Go編譯與工具83
1.12小結91
第2篇Go Web基礎入門
第2章Go Web開發基礎94
2.1 【實戰】開啟Go Web的第1個程序94
2.2 Web程序運行原理簡介95
2.2.1 Web基本原理95
2.2.2 HTTP簡介97
2.2.3 HTTP請求97
2.2.4 HTTP響應100
2.2.5 URI與URL 104
2.2.6 HTTPS簡介106
2.2.7 HTTP 2簡介106
2.2.8 Web應用程序的組成108
2.3 【實戰】初探Go語言的net/http包110
2.3.1創建簡單的服務器端110
2.3.2創建簡單的客戶端114
2.4使用Go語言的html/template包118
2.4.1了解模板原理118
2.4.2使用html/template包120
2.5小結131
第3章接收和處理Go Web請求132
3.1 【實戰】創建一個簡單的Go Web服務器132
3.2接收請求134
3.2.1 ServeMux和DefaultServeMux 134
3.2.2處理器和處理器函數146
3.2.3串聯多個處理器和處理器函數150
3.2.4構建模型151
3.2.5生成HTML表單153
3.3處理請求155
3.3.1了解Request結構體155
3.3.2請求URL 158
3.3.3請求頭159
3.3.4請求體160
3.3.5處理HTML表單161
3.3.6了解ResponseWriter原理164
3.4了解session和cookie 171
3.4. 1 session和cookie的簡介171
3.4.2 Go與cookie 173
3.4.3 Go使用session 176
3.5小結181
第4章用Go訪問數據庫182
4.1 MySQL的安装及使用 182
4.1.1 MySQL简介 182
4.1.2 MySQL的安装 183
4.1.3 MySQL基础入门 183
4.1.4 用Go访问MySQL 193
4.2 Redis的安装及使用 203
4.2.1 Redis的安装 203
4.2.2 Redis基础入门 203
4.2.3 Go访问Redis 208
4.3 MongoDB的安装及使用 216
4.3.1 MongoDB的安装 216
4.3.2 MongoDB基础入门 217
4.3.3 Go访问MongoDB 223
4.4 Go的常见ORM库 237
4.4.1 什么是ORM 237
4.4.2 Gorm(性能极好的ORM库)的安装及使用 238
4.4.3 Beego ORM——Go语言的ORM框架 242
4.5 小结 247
第3篇 Go Web高级应用
第5章 Go高级网络编程 250
5.1 Go Socket编程 250
5.1.1 什么是Socket 250
5.1.2 客户端Dial()函数的使用 254
5.1.3 客户端DialTCP()函数的使用 256
5.1.4 UDP Socket的使用 261
5.1.5 【實戰】用Go Socket實現一個簡易的聊天程序265
5.2 Go RPC編程270
5.2.1什麼是RPC 270
5.2.2 Go RPC的應用271
5.3微服務277
5.3.1什麼是微服務277
5.3. 2 【實戰】用gRPC框架構建一個簡易的微服務281
5.4小結286
第6章Go文件處理287
6.1操作目錄與文件287
6.1.1操作目錄287
6.1.2創建文件292
6.1.3打開與關閉文件293
6.1.4讀寫文件294
6.1.5移動與重命名文件299
6.1.6刪除文件299
6.1.7複製文件301
6.1.8修改文件權限304
6.1.9文件鏈接306
6.2處理XML文件307
6.2.1解析XML文件307
6.2.2生成XML文件310
6.3處理JSON文件313
6.3.1讀取JSON文件313
6.3.2生成JSON文件315
6.4處理正則表達式316
6.4.1正則表達式簡介316
6.4.2使用Go正則表達式322
6.5 【實戰】從數據庫中導出一個CSV文件329
6.6處理Go日誌記錄332
6.7小結335
第7章Go並發編程336
7.1並發與並行336
7.2進程、線程和協程338
7.3 Go並發模型簡介340
7.4用goroutine和通道實現並發341
7.4.1 goroutine簡介341
7.4.2通道343
7.5用sync包實現並發351
7.5.1競態351
7.5.2互斥鎖352
7.5.3讀寫互斥鎖354
7.5.4 sync. Once結構體358
7.5.5同步等待組sync.WaitGroup 361
7.5.6競態檢測器364
7.6用Go開發並發的Web應用366
7.6.1 【實戰】開發一個自增整數生成器366
7.6.2 【實戰】開發一個並發的消息發送器366
7.6.3 【實戰】開發一個多路複合計算器367
7.6.4 【實戰】用select關鍵字創建多通道監聽器368
7.6.5 【實戰】用無緩衝通道阻塞主線370
7.6.6 【實戰】用篩法求素數371
7.6.7 【實戰】創建隨機數生成器372
7.6.8 【實戰】創建一個定時器373
7.6.9 【實戰】開發一個並發的Web爬蟲374
7.7小結377
第8章Go RESTful API接口開發378
8.1什麼是RESTful API 378
8.2 Go流行Web框架的使用382
8.2.1為什麼要用框架382
8.2.2 Gin框架的使用382
8.2.3 Beego框架的使用395
8.3 【實戰】用Gin框架開發RESTful API 412
8.3.1路由設計412
8.3.2數據表設計412
8.3.3模型代碼編寫412
8.3.4邏輯代碼編寫413
8.4 【實戰】用Go開發OAuth 2.0接口417
8.4.1 OAuth 2.0簡介417
8.4.2用Go開發OAuth 2.0接口的示例418
8.5小結423
第4篇Go Web項目實戰
第9章【實戰】開發一個B2C電子商務系統426
9.1需求分析426
9.2系統設計427
9.2.1確定係統架構427
9.2.2制定係統流程428
9.3設計軟件架構429
9.4設計數據庫與數據表430
9.5搭建系統基礎架構431
9.6前台模塊開發441
9.6.1首頁模塊開發443
9.6.2註冊登錄模塊開發450
9.6.3用戶中心模塊開發463
9.6.4商品展示模塊開發469
9.6.5購物車模塊開發474
9.6.6收銀台模塊開發481
9.6.7支付模塊開發489
9.7後台模塊開發493
9.7.1登錄模塊開發493
9.7.2商品模塊開發495
9.8小結499
第10章用Docker部署Go Web應用500
10.1了解Docker組件及原理500
10.1.1什麼是Docker 500
10.1.2為什麼用Docker 502
10.1.3 Docker引擎502
10.1.4 Docker構架503
10.1.5 Docker核心概念503
10.1.6 Docker常用命令504
10.2安裝Docker 509
10.2.1 Linux Docker安裝509
10.2.2 Windows Docker安裝510
10.2.3 Mac OS X Docker安裝511
10.3 【實戰】用Docker運行一個Go Web應用程序512
10.3.1為什麼使用Docker運行Go Web應用程序512
10.3.2創建Go Web應用程序512
10.3.3用Docker運行一個Go Web應用程序513
10.4 【實戰】通過Docker-Compose快速部署515
10.4.1 Docker-Compose簡介515
10.4.2通過Docker-Compose實戰部署516
10.5 【實戰】將Docker容器推送至服務器520
10.5.1到Docker Hub官網註冊賬號520
10.5.2同步本地和Docker hub的標籤(tag) 520
10.5.3推送鏡像到Docker Hub 521
10.5.4訪問Docker Hub鏡像521
10.5.5使用發布的Docker Hub鏡像522
10.6小結523
作者介紹
廖顯東
高級軟件架構師,全棧開發者,技術極客,Gopher,開源愛好者。
畢業於河海大學,先後就職於蘇寧易購等多家大型公司。
具有多年軟件開發與團隊管理經驗,精通Java、JavaScript、C、C++、C#、Python、PHP等開發語言。
對Go、Rust等開發語言有深入實踐和研究。
對大型電子商務系統開發、高並發架構、分佈式架構、微服務、大數據、人工智能算法等領域有深入實踐和研究。