GO語言編程從入門到實踐(簡體書)
商品資訊
ISBN13:9787302603894
出版社:清華大學出版社(大陸)
作者:黃永祥
出版日:2022/06/01
裝訂/頁數:平裝/424頁
規格:24cm*17cm (高/寬)
版次:一版
商品簡介
本書是一本來自一線開發者的Go語言編程入門書,深入淺出地講述了Go語言的語法特性和編程實踐,全書分為基礎和項目兩部分,基礎部分主要介紹Go語言開發環境的搭建、基礎語法、數據類型、指針、內置容器、函數、結構體、接口、反射、並發編程、包的應用與管理、目錄與文件管理、時間管理、數據庫編程等,項目部分主要介紹網頁自動化測試程序、網絡爬蟲程序、網絡信息反饋網站的開發實踐,此外,還介紹了Go語言程序的編譯方法。本書各章還提供了近20個動手練習小項目,便於讀者邊學邊練,迅速提升編程技能。
本書通俗易懂,體系完備,注重實踐,適合對Go語言感興趣的各層次讀者使用。
作者簡介
黃永祥,資深軟件工程師,從業10年,先後從事過系統開發和自動化開發,精通(B/S和C/S)自動化測試技術,尤其是對Go語言、Python語言及Gin、Django等Web框架擁有豐富的經驗。已出版《實戰Python網絡爬蟲》《Django Web應用開發實戰》《精通Python自動化編程》等多部IT技術圖書。
名人/編輯推薦
Go語言用途眾多,比如,Go語言可以作為服務器編程語言,很適合處理日志、數據打包、虛擬機處理、文件系統、分布式系統、數據庫代理等;在網絡編程方面,Go語言廣泛應用於Web 應用、API應用、下載應用等;除此之外,Go語言還適用於內存數據庫和云平臺領域,目前國外很多云平臺都是採用Go開發的。總之,Go語言在云計算開發、網絡編程、運維開發等領域都有廣泛的應用。本書正是為使廣大讀者能夠掌握Go這一強大好用的語言而編寫的。
本書結合作者近十年一線開發經驗,力圖使用通俗易懂、深入淺出的描述和豐富的動手練習示例,介紹Go語言的語法特性和編程實踐。書中還提供了20多個項目,讀者在學習本書之後,不僅可以掌握Go語言的使用,還可以自己動手開發實際應用。
序
Go(又稱 Golang)語言於2007年在Google公司誕生,經過10多年的發展得到了眾多開發者的關注和廣泛應用,隨著云計算時代的到來,Go語言的簡潔、高效、並發特性和成熟的開源社區吸引了眾多傳統語言開發者的加入,而且人數越來越多。
甚至有人認為,Go語言是互聯網時代的C語言,不僅會制霸云計算,10年內還將會制霸整個IT領域。
Go語言用途眾多,比如,Go語言可以作為服務器編程語言,很適合處理日志、數據打包、虛擬機處理、文件系統、分布式系統、數據庫代理等;在網絡編程方面,Go語言廣泛應用於Web 應用、API應用、下載應用等;除此之外,Go語言還適用於內存數據庫和云平臺領域,目前國外很多云平臺都是採用Go開發的。總之,Go語言在云計算開發、網絡編程、運維開發等領域都有廣泛的應用。本書正是為使廣大讀者能夠掌握Go這一強大好用的語言而編寫的。
本書結合筆者多年一線開發經驗,力圖使用通俗易懂、深入淺出的描述和豐富的動手練習示例,介紹Go語言的語法特性和編程實踐。書中還提供了多個項目,讀者在學習本書之後,不僅可以掌握Go語言的使用,還可以自己動手開發實際應用。
本書結構
本書分為基礎和項目兩部分,全書共20章,其中基礎部分為第1~16章,項目部分為第17~19章,最後一章介紹了Go程序的編譯,各章內容簡要介紹如下:
第1章介紹Go語言的發展歷程、開發環境搭建、代碼編輯器的安裝和入門代碼編寫。
第2章介紹關鍵字、標識符、變量、常量、運算符和代碼注釋等入門知識。
第3章講述數據類型,即整型、浮點數、復數、布爾型和字符串,還介紹了浮點數精度丟失的解決方案、ASCII與Unicode編碼差異、字符串操作和數據類型轉換。
第4章講述流程控制——判斷和循環。判斷包含if和switch語句,循環包含for、for-range、break、continue和goto語句。
第5章講述指針的概念、定義與空指針、指針賦值與取值、切片指針和指針的指針等。
第6章講述內置容器,包括數組、切片、集合和列表,分別介紹各個容器的定義與應用。
第7章講述函數的應用,包括函數的定義與調用、設置不固定函數參數、函數變量、匿名函數、閉包和遞歸函數。
第8章講述結構體應用,包括結構體定義與實例化、設置結構體標簽、匿名結構體與匿名成員、結構體嵌套、自定義構造函數和結構體方法。
第9章講述接口應用,包括接口定義與使用、鴨子類型、多態與工廠函數、接口組合、空接口和接口的類型斷言。
第10章講述反射機制,包括反射3大定律、反射類型與種類以及不同數據類型的反射操作。
第11章講述並發編程,包括異步概念、函數創建並發、通道變量、無緩衝通道、帶緩衝通道、Select處理多通道、sync同步等待、sync加鎖機制和sync.Map的應用。
第12章講述語法特徵,包括panic觸發宕機、defer延時執行、recover宕機時恢復執行、值類型、引用類型與深淺拷貝、類型別名與自定義、關鍵字new和make的區別。
第13章講述包的應用與管理,包括常用內置包、包命名與導入、包的重命名、無包名調用、初始化函數init()與空導入、包管理工具go mod和第三方包的下載與使用。
第14章講述系統目錄與文件處理,分別介紹內置包os、io/ioutil、bufio、encoding/csv、encoding/json和第三方包excelize實現目錄與文件的讀寫處理。
第15章講述時間處理,由內置包time生成不同類型的時間格式——時間戳、結構體Time和字符串格式化,並講述時間類型轉換、加減運算、延時、超時和定時等功能。
第16章講述數據庫編程,闡述如何安裝不同的數據庫,使用第三方包實現SQLite、MySQL、MongoDB和Redis的編程應用。
第17章講述網頁自動化測試開發,搭建自動化測試開發環境和闡述第三方包tebeka/selenium的使用。
第18章講述網絡爬蟲開發,介紹網絡爬蟲知識要點,使用內置包net/http、第三方包goquery、mahonia等實現爬蟲開發。
第19章講述網絡編程應用,介紹網絡編程知識,使用內置包net/http開發HTTP服務、第三方包httprouter擴展路由功能、html/template生成HTML網頁等Web應用開發。
第20章講述內置指令go build的編譯功能,實現單文件、多文件、不同包多文件等編譯處理以及編譯參數說明。
本書特色
? 循序漸進,從零基礎入手:本書從初學者必備的基礎知識入手,循序漸進地介紹Go語言的語法特性和基礎理論,適合沒有接觸過Go語言編程的讀者使用。
? 實例豐富,由淺入深:本書每個知識點都配以實例進行講解,各章最後還提供了動手練習小項目。實例選擇從易到難,結合了筆者的實際開發經驗,動手練習可以幫助讀者鞏固知識、提升技能,解決實際開發中遇到的各種問題。
? 注重實踐,適合不同層次的讀者:本書既適合初學者閱讀,也適合不同崗位的從業者使用。本書根據筆者多年從業經驗編寫,書中涉及的用Go語言開發爬蟲、開發自動化測試程序、開發網站項目,可以滿足各類開發人員的需求。
源代碼下載
讀者可登錄GitHub下載本書源代碼。
也可以掃描以下二維碼下載源代碼:
如果下載有問題,請發送郵件,郵件主題為“Go語言編程從入門到 實踐”。
讀者物件
本書主要適合以下讀者閱讀:
? 從零開始學習Go語言編程的初學者。
? 各類開發崗位的從業者,如爬蟲開發人員、測試人員和後端開發人員等。
? 培訓機構和大專院校的學生。
筆者從事編程工作近10年,本書可以說是來自開發實踐的經驗心得,雖然力臻完美,但限於水平,難免會存在疏漏之處,歡迎廣大讀者及業界專家不吝指正。
黃永祥
2022年3月2日
目次
第1章 認識Go語言 1
1.1 Go語言簡介 1
1.2 Go語言的優勢與特性 2
1.3 在Windows下安裝Go 3
1.4 在Linux下安裝Go 6
1.5 在macOS下安裝Go 8
1.6 安裝GoLand 9
1.7 搭建GoLand環境 10
1.8 第一個Go程序“Hello World” 11
1.9 動手練習:編程實現人機交互 12
1.10 小結 14
第2章 基礎語法 15
2.1 關鍵字與標識符 15
2.1.1 關鍵字 15
2.1.2 標識符命名規範 17
2.1.3 空白標識符 18
2.1.4 預聲明標識符 19
2.1.5 導出標識符 21
2.1.6 唯一標識符 22
2.2 變量與常量 22
2.2.1 變量定義與賦值 22
2.2.2 常量與iota 24
2.3 運算符的使用 26
2.3.1 算術運算符 26
2.3.2 關係運算符 27
2.3.3 賦值運算符 28
2.3.4 邏輯運算符 30
2.3.5 位運算符 31
2.3.6 其他運算符 33
2.3.7 運算符優先級 33
2.4 代碼注釋 34
2.5 動手練習:編程實現個人健康評測 35
2.6 小結 36
第3章 數據類型 38
3.1 整型的取值範圍 38
3.2 浮點類型與精度丟失 40
3.3 復數的計算 42
3.4 布爾型的應用 43
3.5 ASCII與Unicode編碼 44
3.6 字符類型 45
3.7 字符串操作 45
3.7.1 字符串與轉義符 46
3.7.2 字符串格式化 47
3.7.3 字符串拼接 49
3.7.4 獲取字符串長度 50
3.7.5 遍歷字符串 51
3.7.6 字符位置與截取 52
3.7.7 字符串分割 53
3.7.8 字符串替換 54
3.8 轉換數據類型 55
3.8.1 整型與浮點型 55
3.8.2 整型與字符串 56
3.8.3 浮點型與字符串 57
3.9 動手練習:編程實現在線客服熱線 59
3.10 小結 61
第4章 流程控制 62
4.1 if的條件判斷 62
4.2 if的多層嵌套 64
4.3 switch的多條件分支 65
4.4 for的循環遍歷 69
4.5 for-range獲取鍵值 70
4.6 break越級終止循環 71
4.7 continue跳過本次循環 72
4.8 goto跳到指定代碼 73
4.9 動手練習:編程實現簡易計算器 74
4.10 小結 77
第5章 指針 78
5.1 指針的概念 78
5.2 指針定義與空指針 79
5.3 指針賦值與取值 81
5.4 切片指針 83
5.5 指針的指針 86
5.6 動手練習:編程實現彩票36選7 87
5.7 小結 90
第6章 內置容器 91
6.1 數組 91
6.1.1 數組定義與操作 91
6.1.2 數組初始化定義 92
6.1.3 多維數組 93
6.2 切片 95
6.2.1 切片定義與操作 95
6.2.2 新增切片元素 97
6.2.3 截取切片元素 98
6.2.4 復制切片 100
6.2.5 切片長度與容量 101
6.3 集合 102
6.3.1 集合定義與操作 102
6.3.2 刪除集合元素 104
6.4 動手練習:編程實現集合與
JSON互換 104
6.5 列表 107
6.5.1 列表定義 107
6.5.2 列表元素操作 108
6.5.3 遍歷列表元素 110
6.6 動手練習:編程實現產品抽樣
檢測 112
6.7 小結 114
第7章 函數 116
7.1 函數定義與調用 116
7.2 不固定參數數量 119
7.3 函數以變量表示 120
7.4 沒有名字的函數 121
7.5 引用外部變量的函數 122
7.6 函數自身調用 123
7.7 動手練習:編程實現創建文件
後綴名 124
7.8 小結 126
第8章 結構體 127
8.1 Go的“面向物件” 127
8.2 結構體定義與實例化 128
8.3 指針方式的實例化 130
8.4 結構體標簽 131
8.5 匿名結構體與匿名成員 133
8.6 結構體嵌套 134
8.7 自定義構造函數 136
8.8 結構體方法:指針與值接收者 138
8.9 動手練習:編程實現結構體與
JSON互換 140
8.10 動手練習:編程實現多鍵索引
查詢數據 142
8.11 小結 145
第9章 接口 147
9.1 接口定義與使用 147
9.2 鴨子類型 150
9.3 多態與工廠函數 152
9.4 接口的自由組合 153
9.5 任意數據類型的空接口 156
9.6 接口的類型斷言 158
9.7 動手練手:編程實現營救村民
遊戲 161
9.8 小結 166
第10章 反射 168
10.1 什麼是反射 168
10.2 第一定律:接口變量轉反射
變量 169
10.3 第二定律:反射變量轉接口
變量 170
10.4 第三定律:修改反射變量的值 171
10.5 反射的類型與種類 173
10.6 切片與反射 175
10.7 集合與反射 177
10.8 結構體與反射 180
10.9 指針與反射 187
10.10 函數與反射 190
10.11 動手練習:編程實現物件序列化
處理 192
10.12 小結 193
第11章 並發編程 194
11.1 異步的概念 194
11.2 Goroutine 195
11.3 函數創建Goroutine 197
11.4 匿名函數創建Goroutine 199
11.5 通道 200
11.6 無緩衝通道 202
11.7 帶緩衝通道 204
11.8 關閉通道讀取數據 205
11.9 Select處理多通道 207
11.10 sync同步等待 208
11.11 sync加鎖機制 210
11.12 sync.Map的應用 214
11.13 動手練習:編程模擬餐館經營
場景 219
11.14 小結 221
第12章 語法特性 223
12.1 panic觸發宕機 223
12.2 defer延時執行 224
12.3 recover宕機時恢復執行 225
12.4 值類型、引用類型與深淺拷貝 226
12.5 類型別名與自定義 229
12.6 new和make的區別 231
12.7 泛型的概念與應用 234
12.8 動手練習:編程實現出租車費用
計算 236
12.9 小結 238
第13章 包的應用與管理 239
13.1 常用內置包 239
13.2 包命名與導入 240
13.3 包的重命名 242
13.4 無包名調用 242
13.5 初始化函數init()與空導入 243
13.6 包的自定義與使用 245
13.7 包管理工具go mod 246
13.8 第三方包下載與使用 249
13.9 動手練習:編程實現排序算法 251
13.10 小結 255
第14章 目錄與文件處理 257
14.1 使用os實現系統操作 257
14.2 使用path獲取路徑信息 262
14.3 使用os讀寫文件 267
14.4 使用io/ioutil讀寫文件 270
14.5 使用bufio讀寫文件 272
14.6 使用encoding/csv讀寫CSV文件 275
14.7 使用encoding/json讀寫
JSON文件 278
14.8 第三方包讀寫Excel文件 280
14.9 動手練習:編程實現學生管理
系統 283
14.10 小結 286
第15章 時間處理 287
15.1 時間戳 287
15.2 結構體Time 289
15.3 字符串格式化 290
15.4 時間類型的相互轉換 292
15.5 時間計算操作 293
15.6 延時、超時與定時 297
15.7 動手練習:編程實現個人
備忘錄 300
15.8 小結 302
第16章 數據庫編程 304
16.1 搭建SQLite運行環境 304
16.2 安裝與使用MySQL 306
16.3 安裝與使用MongoDB 309
16.4 安裝與使用Redis 312
16.5 go-sqlite3讀寫SQLite 314
16.6 go-sql-driver/mysql讀寫MySQL 317
16.7 mongo-driver讀寫MongoDB 320
16.8 go-redis讀寫Redis 325
16.9 ORM框架:Gorm 330
16.10 動手練習:編程實現員工管理
系統 335
16.11 小結 337
第17章 Go項目——網頁自動化測試
程序開發 339
17.1 了解自動化工具Selenium 339
17.2 安裝Selenium 340
17.3 使用瀏覽器查找元素 342
17.4 瀏覽器配置與啟動 345
17.5 網頁元素定位 349
17.6 網頁元素操作 353
17.7 瀏覽器常用操作 356
17.8 網頁加載等待 358
17.9 iframe與標簽頁切換 360
17.10 Cookie讀寫 363
17.11 動手練習:編程實現爬取
BOSS直聘招聘數據 365
17.12 小結 370
第18章 Go項目——網絡爬蟲程序
開發 372
18.1 HTTP與HTTPS 372
18.2 請求頭 374
18.3 使用瀏覽器分析網站 375
18.4 使用net/http發送請求 377
18.5 轉碼與HTML解析 379
18.6 選擇數據存儲方式 382
18.7 動手練習:編程實現爬取
電影TOP100榜單 383
18.8 小結 388
第19章 Go項目——網絡編程應用 389
19.1 TCP和UDP的區別 389
19.2 創建TCP應用 390
19.3 創建UDP應用 393
19.4 創建HTTP服務應用 396
19.5 httprouter擴展路由 399
19.6 多種響應處理方式 401
19.7 HTML模板引擎 404
19.8 網站項目:信息反饋平臺的開發 410
19.8.1 網站功能需求 410
19.8.2 項目架構設計 411
19.8.3 搭建開發環境 412
19.8.4 定義模型與路由 412
19.8.5 編寫模板文件 415
19.8.6 網站運行與測試 417
19.9 小結 419
第20章 編譯與運行 420
20.1 run與build的區別 420
20.2 單文件編譯 421
20.3 同包多文件編譯 422
20.4 不同包多文件編譯 422
20.5 編譯參數說明 423
20.6 小結 424
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。