Go語言權威指南

杜金房

商品描述

Go是一種簡潔高效的編程語言,由Google設計,它將強大的靜態類型與簡單的語法和全面的標準庫結合在一起,支持並發/並行編程等特性,能讓程序員提高效率。本書主要面向希望使用Go創建應用程序的開發人員,作者講解了如何充分利用Go語言實現高效程序,從基礎知識開始介紹,逐步過渡到先進且覆雜的特性。你將了解Go語言是如何構建在一個簡單而一致的類型系統上,進而讓你有全面而富有成效的開發體驗,從而構建快速而健壯的跨平台運行的應用程序的。

目錄大綱

第一部分  理解Go語言
第1章  第一個Go應用程序2
1.1  設置場景2
1.2  安裝開發工具2
1.3  創建項目3
1.4  定義數據類型和集合5
1.5  創建HTML模板6
1.6  創建HTTP處理程序和服務器12
1.7  編寫表單處理函數15
1.8  添加數據驗證功能19
1.9  小結21
第2章  本書概要22
2.1  為什麽應該學習Go22
2.2  Go有什麽問題22
2.3  真有那麽糟糕嗎23
2.4  你需要了解什麽23
2.5  本書的結構23
2.6  本書不包括什麽24
2.7  如果在本書中發現錯誤該怎麽辦24
2.8  有很多示例嗎24
2.9  運行示例需要什麽軟件26
2.10  小結27
第3章  Go工具28
3.1  使用go命令28
3.2  創建Go項目29
3.3  編譯並運行源代碼31
3.4  調試Go代碼32
3.5  審查Go代碼36
3.6  修覆Go代碼中的常見問題41
3.7  格式化Go代碼43
3.8  小結44
第4章  基本類型、值和指針45
4.1  為本章做準備46
4.2  使用Go語言標準庫46
4.3  了解基本數據類型48
4.4  使用常量49
4.5  使用變量52
4.6  使用空白標識符57
4.7  了解指針58
4.8  小結65
第5章  運算和轉換66
5.1  為本章做準備67
5.2  了解Go運算符67
5.3  轉換、解析和格式化值75
5.4  小結88
第6章  流控制89
6.1  為本章做準備90
6.2  流控制90
6.3  使用if語句91
6.4  使用for循環96
6.5  使用switch語句102
6.6  使用標簽語句109
6.7  小結110
第7章  數組、切片和map111
7.1  為本章做準備112
7.2  使用數組113
7.3  使用切片118
7.4  使用map134
7.5  理解字符串的雙重性質139
7.6  小結145
第8章  函數146
8.1  為本章做準備147
8.2  定義簡單函數147
8.3  定義和使用函數參數148
8.4  定義和使用函數結果155
8.5  使用defer關鍵字162
8.6  小結163
第9章  函數類型164
9.1  為本章做準備165
9.2  了解函數類型165
9.3  創建函數類型別名170
9.4  使用函數文字語法171
9.5  小結182
第10章  結構183
10.1  為本章做準備184
10.2  定義和使用結構184
10.3  創建包含結構值的數組、
    切片和map193
10.4  了解結構和指針194
10.5  小結205
第11章  方法和接口206
11.1  為本章做準備207
11.2  定義和使用方法208
11.3  將類型和方法放在單獨的
    文件中217
11.4  定義和使用接口218
11.5  比較接口值225
11.6  執行類型斷言226
11.7  使用空接口229
11.8  小結233
第12章  包234
12.1  為本章做準備235
12.2  了解模塊文件235
12.3  創建自定義包236
12.4  使用外部包247
12.5  小結250
第13章  類型和接口組合251
13.1  為本章做準備251
13.2  了解類型組合252
13.3  組合類型254
13.4  了解組合和接口261
13.5  小結267
第14章  goroutine和通道268
14.1  為本章做準備269
14.2  Go語言如何執行代碼271
14.3  創建額外的goroutine272
14.4  從goroutine返回結果276
14.5  使用通道280
14.6  使用select語句293
14.7  小結300
第15章  錯誤處理301
15.1  為本章做準備302
15.2  處理可恢覆的錯誤303
15.3  處理不可恢覆的錯誤309
15.4  小結316
第二部分  使用Go語言標準庫
第16章  字符串處理和正則表達式318
16.1  為本章做準備319
16.2  處理字符串319
16.3  使用正則表達式336
16.4  小結344
第17章  格式化和掃描字符串345
17.1  為本章做準備346
17.2  書寫字符串347
17.3  格式化字符串348
17.4  掃描字符串356
17.5  小結361
第18章  數學函數和數據排序362
18.1  為本章做準備363
18.2  使用數字363
18.3  數據排序368
18.4  小結376
第19章  日期、時間和時長377
19.1  為本章做準備378
19.2  使用日期和時間378
19.3  goroutine和通道的時間特性392
19.4  小結399
第20章  讀取和寫入數據400
20.1  為本章做準備401
20.2  了解讀取器和書寫器402
20.3  為讀取器和書寫器使用工具
    函數405
20.4  使用專門的讀取器和書寫器406
20.5  緩沖數據412
20.6  用讀取器和書寫器格式化和
    掃描數據419
20.7  小結422
第21章  使用JSON數據423
21.1  為本章做準備424
21.2  讀取和寫入JSON數據424
21.3  小結443
第22章  使用文件444
22.1  為本章做準備445
22.2  讀取文件446
22.3  將數據寫入文件451
22.4  使用便利函數創建新文件455
22.5  使用文件路徑456
22.6  管理文件和目錄458
22.7  探索文件系統460
22.8  小結464
第23章  HTML和文本模板465
23.1  為本章做準備466
23.2  創建HTML模板467
23.3  創建文本模板488
23.4  小結490
第24章  創建HTTP服務器491
24.1  為本章做準備492
24.2  創建簡單的HTTP服務器493
24.3  創建靜態HTTP服務器504
24.4  使用模板生成響應507
24.5  響應JSON數據509
24.6  處理表單數據510
24.7  讀取和設置Cookie517
24.8  小結519
第25章  創建HTTP客戶端520
25.1  為本章做準備521
25.2  發送HTTP請求524
25.3  配置HTTP客戶端請求530
25.4  創建多部分表單540
25.5  小結543
第26章  使用數據庫544
26.1  為本章做準備545
26.2  安裝數據庫驅動程序547
26.3  打開數據庫547
26.4  執行語句和查詢549
26.5  使用預編譯語句559
26.6  使用事務562
26.7  使用反射將數據掃描到結構中563
26.8  小結567
第27章  使用反射:第1部分568
27.1  為本章做準備569
27.2  了解反射的必要性570
27.3  使用反射的基本特性572
27.4  識別類型578
27.5  獲取底層值581
27.6  使用反射設置值582
27.7  比較值586
27.8  轉換值588
27.9  創建新值591
27.10  小結593
第28章  使用反射:第2部分594
28.1  為本章做準備594
28.2  使用指針595
28.3  使用數組和切片類型597
28.4  使用數組和切片值598
28.5  使用map類型603
28.6  使用map值604
28.7  使用結構類型608
28.8  使用結構值615
28.9  小結618
第29章  使用反射:第3部分619
29.1  為本章做準備619
29.2  使用函數類型621
29.3  使用函數值622
29.4  使用方法627
29.5  使用接口630
29.6  使用通道類型634
29.7  使用通道值635
29.8  創建新的通道類型和值636
29.9  從多個通道中選擇接收637
29.10  小結639
第30章  協調goroutine640
30.1  為本章做準備641
30.2  使用等待組641
30.3  使用互斥644
30.4  使用條件來協調goroutine649
30.5  確保函數僅執行一次652
30.6  使用Context654
30.7  小結660
第31章  單元測試、基準測試和日志661
31.1  為本章做準備661
31.2  使用測試662
31.3  基準代碼669
31.4  寫日志673
31.5  小結676
第三部分  應用Go語言
第32章  創建Web平台678
32.1  創建項目678
32.2  創建一些基本的平台功能679
32.3  通過依賴注入管理服務687
32.4  小結698
第33章  中間件、模板和處理程序699
33.1  創建請求處理流水線699
33.2  創建HTML響應713
33.3  引入請求處理程序719
33.4  小結729
第34章  操作、會話和授權730
34.1  引入操作結果730
34.2  在模板中調用請求處理程序735
34.3  從路由中生成URL741
34.4  定義別名路由745
34.5  驗證請求數據747
34.6  添加會話753
34.7  添加用戶授權功能759
34.8  小結770
第35章  SportsStore:一個真正的
    應用程序771
35.1  創建SportsStore項目771
35.2  啟動數據模型773
35.3  顯示產品列表776
35.4  添加分頁779
35.5  為模板內容添加樣式782
35.6  添加類別過濾支持784
35.7  小結790
第36章  SportsStore:購物車和
    數據庫791
36.1  構建購物車791
36.2  使用數據庫存儲802
36.3  小結812
第37章  SportsStore:結賬和管理813
37.1  創建結賬流程813
37.2  創建管理功能826
37.3  小結842
第38章  SportsStore:完成與部署843
38.1  完成管理功能843
38.2  限制對管理功能的訪問848
38.3  創建Web服務854
38.4  準備部署856
38.5  小結860