Go職場必備 Job Ready Go
[美] 海瑟姆·巴爾蒂(Haythem Balti)金伯利·A.韋斯(Kimberly A. Weiss)著 殷海英 譯
- 出版商: 清華大學
- 出版日期: 2024-04-01
- 定價: $768
- 售價: 8.5 折 $653
- 語言: 簡體中文
- ISBN: 7302655731
- ISBN-13: 9787302655732
- 此書翻譯自: Job Ready Go
下單後立即進貨 (約4週~6週)
買這商品的人也買了...
-
$699$552 -
$454超大流量分佈式系統架構解決方案:人人都是架構師2.0
-
$680$537 -
$560$437 -
$880$695 -
$594$564 -
$580$493 -
$780$616 -
$499$394 -
$536架構設計 2.0:大型分佈式系統架構方法論與實踐
-
$720$562 -
$359$341 -
$550$429 -
$680$530 -
$654$621 -
$653ReactJS 實踐入門
-
$551TypeScript + React Web 應用開發實戰
-
$299$284 -
$580$568 -
$539$512 -
$588$559 -
$719$683 -
$510Redis 高手心法
-
$1,000$790 -
$630$498
相關主題
商品描述
主要內容 ● 如何配置Go語言環境,並提供設計、開發和測試Go應用程序的入門指南。 ● 對基本數據結構(如映射、切片和數組)的實際討論。 ● gRPC和並發的基本原理。 ● 在Go語言中設計和開發API的基礎知識。
目錄大綱
目 錄
第I部分 Go編程語言的基礎知識
第1課 初識Go語言 2
1.1 安裝Go 2
1.1.1 下載安裝文件 3
1.1.2 開始安裝Go 4
1.2 對安裝結果進行測試 6
1.3 創建Hello, World!程序 8
1.3.1 編譯並運行程序 9
1.3.2 其他運行方法 10
1.3.3 調試Hello,World!程序 11
1.3.4 格式化Go代碼 12
1.4 安裝多個版本的Go 13
1.5 Go的在線編輯器:Go Playground 13
1.6 本課小結 14
1.7 本課練習 15
第2課 Go語言基礎 17
2.1 理解語句和標記 17
2.2 語句 18
2.3 註釋 20
2.3.1 單行註釋 20
2.3.2 塊註釋或多行註釋 22
2.4 標識符 22
2.4.1 大小寫 24
2.4.2 命名約定 25
2.5 關鍵字 26
2.6 本課小結 27
2.7 本課練習 27
第3課 使用變量 31
3.1 變量 31
3.1.1 命名變量 33
3.1.2 聲明和初始化變量 33
3.2 靜態和動態類型聲明 35
3.2.1 混合聲明類型 37
3.2.2 在單條語句中混合類型聲明 38
3.3 變量作用域 39
3.4 獲取用戶輸入 40
3.4.1 內存地址 40
3.4.2 掃描值 41
3.5 將字符串轉換為數字 43
3.6 數值數據類型 46
3.6.1 獨立於體系結構的整數類型 47
3.6.2 超出範圍的值 49
3.6.3 特定於實現的整數類型 49
3.6.4 浮點類型 50
3.7 本課小結 52
3.8 本課練習 52
第4課 執行運算 55
4.1 算術運算 55
4.1.1 混合數字類型 57
4.1.2 數字類型轉換 59
4.1.3 PEMDAS運算規則 60
4.2 賦值運算 62
4.2.1 加法和減法賦值運算 63
4.2.2 乘法、除法和求模賦值運算 64
4.3 使用布爾值 65
4.4 關系運算 66
4.4.1 為布爾變量賦值 67
4.4.2 在關系運算中使用不匹配的類型 68
4.5 布爾運算 69
4.6 數學函數 70
4.7 位運算 72
4.8 隨機數 73
4.8.1 限制值的範圍 74
4.8.2 隨機數生成器中的種子 75
4.9 本課小結 76
4.10 本課練習 76
第5課 用條件語句控製程序流程 80
5.1 條件語句 80
5.2 使用if語句 81
5.3 使用多個條件 83
5.4 使用if-else語句 85
5.5 創建嵌套的if語句 86
5.6 使用switch語句 88
5.6.1 使用fallthrough執行多個case 90
5.6.2 在一個case中使用多個表達式 92
5.6.3 在case中使用條件語句 93
5.7 本課小結 94
5.8 本課練習 95
第6課 用循環控製程序流程 99
6.1 循環語句 99
6.2 for循環 101
6.2.1 for循環中的可選項 103
6.2.2 Go中的while語句 104
6.2.3 無限循環 106
6.3 遍歷字符串 107
6.4 range函數 108
6.5 循環控制語句 109
6.5.1 break語句 110
6.5.2 continue語句 111
6.5.3 goto語句 112
6.6 本課小結 113
6.7 本課練習 113
第7課 綜合練習:個稅計算器 118
7.1 準備工作 119
7.2 第一步:收集需求 119
7.2.1 使用的值 119
7.2.2 用戶界面 120
7.2.3 其他標準 120
7.3 第二步:設計程序 121
7.4 第三步:創建輸入 121
7.5 第四步:計算應稅收入 123
7.6 第五步:計算稅率 124
7.6.1 添加條件語句 126
7.6.2 創建嵌套條件 128
7.7 第六步:更新應用程序 134
7.7.1 如何處理負的應稅收入 136
7.7.2 核實代碼 137
7.8 第七步:完善用戶界面 138
7.9 自己動手實踐 140
7.10 本課小結 141
第II部分 用Go組織代碼和數據
第8課 使用函數 144
8.1 定義函數 144
8.1.1 使用多個函數 146
8.1.2 沒有返回值的函數 147
8.1.3 帶有多個返回值的函數 148
8.2 變長函數 152
8.3 遞歸 153
8.4 將函數作為值 154
8.5 閉包 155
8.6 本課小結 157
8.7 本課練習 157
第9課 訪問數組 160
9.1 聲明數組 161
9.1.1 給數組元素賦值 161
9.1.2 數組的基本規則 163
9.1.3 數組元素和變量的相似性 164
9.2 對數組進行聲明和初始化 166
9.3 推斷數組大小 167
9.4 使用for循環填充數組 168
9.5 在數組中使用range 169
9.6 創建多維數組 170
9.7 復制數組 171
9.8 比較數組 172
9.9 本課小結 174
9.10 本課練習 174
第10課 使用指針 177
10.1 創建指針 177
10.1.1 初始化指針 179
10.1.2 聲明和初始化指針 179
10.1.3 使用動態類型 180
10.1.4 不同類型的指針 181
10.2 通過指針訪問變量值 183
10.3 瞭解nil指針 184
10.4 使用指針改變變量值 185
10.5 比較指針 186
10.6 使用指針數組 187
10.7 在函數中使用指針 189
10.8 本課小結 191
10.9 本課練習 191
第11課 使用結構體 195
11.1 聲明和初始化結構體 195
11.1.1 從結構體中獲取值 197
11.1.2 在聲明結構體變量時對它進行初始化 198
11.1.3 使用短賦值運算符 198
11.2 在結構體中使用鍵值對 199
11.3 使用new關鍵字 201
11.4 指針和結構體 203
11.5 嵌套結構體 204
11.6 向結構體中添加方法 206
11.7 類型和值 208
11.8 對結構體進行比較 209
11.9 本課小結 211
11.10 本課練習 211
第12課 訪問切片 216
12.1 切片的工作原理 216
12.2 對數組進行切片 217
12.2.1 使用len和cap 219
12.2.2 使用快捷方式 220
12.3 改變切片的大小 221
12.4 對切片進行迭代 222
12.5 make函數 223
12.6 使用var創建切片變量 224
12.7 處理切片元素 225
12.7.1 替換切片中的元素 225
12.7.2 使用空切片 226
12.7.3 使用切片的部分元素 227
12.7.4 在切片中使用range 228
12.8 使用append函數向切片追加值 229
12.9 復制切片 230
12.10 使用new關鍵字創建切片 231
12.11 從切片中刪除元素 232
12.12 本課小結 234
12.13 本課練習 234
第13課 操作映射 237
13.1 定義映射 237
13.1.1 維護類型 239
13.1.2 重復的鍵 240
13.2 空映射 240
13.3 使用make創建映射 242
13.4 映射的長度 243
13.5 檢索映射元素 244
13.6 檢查映射中的鍵 245
13.7 遍歷映射 246
13.8 從映射中刪除元素 247
13.9 使用字面值聲明映射 249
13.10 本課小結 250
13.11 本課練習 250
第14課 創建方法 253
14.1 使用方法 253
14.2 定義方法 255
14.3 在方法中使用指針 256
14.4 命名方法 260
14.5 使用值接收器和參數 261
14.6 使用指針接收器和參數 263
14.7 本課小結 266
14.8 本課練習 266
第15課 添加接口 271
15.1 創建接口 271
15.2 接口和代碼可重用性 274
15.3 靜態和動態接口類型 275
15.4 空接口 277
15.5 檢查接口類型 277
15.6 多接口 279
15.7 嵌入式接口 282
15.8 本課小結 283
15.9 本課練習 284
第16課 綜合練習:漢堡店應用程序 286
16.1 應用程序需求 286
16.2 代碼設計 287
16.3 創建結構體 288
16.3.1 創建burger結構體 288
16.3.2 創建drink結構體 291
16.3.3 創建side結構體 293
16.3.4 創建combo結構體 295
16.3.5 創建order結構體 296
16.4 創建輔助函數 298
16.4.1 買漢堡 300
16.4.2 買配餐 301
16.4.3 買飲料 301
16.4.4 買套餐 302
16.5 整合代碼 303
16.6 本課小結 305
16.7 完整的漢堡店應用程序 306
第III部分 用Go創建解決方案
第17課 錯誤處理 314
17.1 Go程序中的錯誤 314
17.2 Go中的error類型 315
17.3 自定義錯誤處理 317
17.4 錯誤方法 318
17.5 Errorf函數 320
17.6 空標識符 321
17.7 用結構體表示錯誤消息 322
17.8 多個自定義錯誤消息 323
17.9 本課小結 326
17.10 本課練習 326
第18課 並發 328
18.1 使用並發 328
18.1.1 操作系統的角色 329
18.1.2 並發帶來的問題 330
18.1.3 互斥 331
18.2 並行 332
18.2.1 實現並行 333
18.2.2 防止由並行引發的問題 334
18.3 使用協程 334
18.4 多協程 336
18.5 使用通道 339
18.5.1 使用make創建通道 340
18.5.2 通道和並發 340
18.5.3 添加延遲 341
18.6 具有多個協程的通道 342
18.7 關閉通道 344
18.8 迭代通道 345
18.9 本課小結 347
18.10 本課練習 347
第19課 排序和數據處理 349
19.1 排序 349
19.1.1 檢查排序後的值 351
19.1.2 自定義排序函數 352
19.1.3 改變排序順序 354
19.2 時間和日期操作 355
19.2.1 定義時間 357
19.2.2 比較時間 358
19.2.3 時間計算 360
19.2.4 解析時間 366
19.2.5 使用UNIX時間 368
19.2.6 格式化標準時間 369
19.3 正則表達式 369
19.4 本課小結 372
19.5 本課練習 372
第20課 文件I/O和OS操作 377
20.1 讀取文件 377
20.1.1 panic函數 379
20.1.2 讀取文件的一部分 380
20.1.3 defer語句 382
20.1.4 從特定的起點讀取文件 382
20.1.5 緩沖讀取器 384
20.1.6 按行讀取文件 385
20.2 向文件寫入數據 387
20.2.1 創建新文件 388
20.2.2 緩沖寫入器 390
20.3 使用目錄 391
20.3.1 創建目錄 392
20.3.2 刪除目錄 393
20.3.3 創建目錄樹 393
20.3.4 列出目錄內容 394
20.3.5 更改目錄 395
20.3.6 臨時文件和臨時目錄 397
20.4 命令行參數 399
20.5 本課小結 400
20.6 本課練習 400
第21課 綜合練習:Go語言中的單詞分析 403
21.1 檢查數據 403
21.2 讀取評論數據 405
21.3 對輸入字符串進行分詞 413
21.3.1 識別標點符號並使用空格進行替換 414
21.3.2 將輸入文本轉換為小寫 415
21.3.3 將字符串分割為單詞 416
21.4 創建一個分詞函數 417
21.4.1 對評論內容進行分詞 418
21.4.2 對整個數據集進行分詞 419
21.5 對每條評論中的單詞進行計數 419
21.6 對評論進行分詞並計數 420
21.7 改進設計 423
21.7.1 改進1:優化結構體 423
21.7.2 改進2:添加自定義錯誤和異常處理 428
21.7.3 改進3:優化分詞 430
21.7.4 改進4:優化單詞計數 431
21.8 進一步的改進 433
21.9 最終代碼清單 433
21.10 本課小結 436
第IV部分 Go開發的高級主題
第22課 測試 438
22.1 測試驅動開發 438
22.2 測試級別 439
22.3 TDD工作流 440
22.3.1 TDD過程 440
22.3.2 TDD的優點 441
22.4 測試包 441
22.4.1 創建程序 442
22.4.2 編寫測試 442
22.4.3 運行測試 444
22.5 教程:測試驅動開發 445
22.5.1 第一個測試:美元金額的字符串表示 445
22.5.2 第二個測試:使用其他值進行測試 447
22.5.3 第三個測試:運算並輸出結果 450
22.5.4 對測試進行檢查 454
22.5.5 第四個測試:包含減法 456
22.5.6 最終測試:查看輸入值 459
22.6 行為驅動開發 462
22.6.1 行為驅動開發的目標 462
22.6.2 避免失敗 463
22.6.3 行為規範 464
22.6.4 定義用戶故事 465
22.7 本課小結 466
22.8 本課練習 466
第23課 API開發教程 467
23.1 概述和要求 467
23.2 第一步:創建數據集和一個簡單的API 468
23.2.1 定義數據集 469
23.2.2 homePage函數 469
23.2.3 返回處理程序 470
23.2.4 對傳入的請求進行處理和路由 470
23.2.5 添加數據 471
23.2.6 執行請求處理程序 472
23.2.7 運行程序 473
23.3 第二步:添加Gorilla Mux路由器 475
23.4 第三步:檢索記錄 478
23.4.1 檢索特定記錄 478
23.4.2 對更新進行測試 479
23.5 第四步:添加新記錄 481
23.6 第五步:刪除記錄 486
23.7 本課小結 490
23.8 本課練習 490
第24課 使用gRPC 492
24.1 使用gRPC 492
24.2 設置服務 493
24.2.1 Git 493
24.2.2 gRPC 494
24.2.3 Protobuf 494
24.2.4 protoc 495
24.2.5 用戶目錄 495
24.3 創建服務器 496
24.4 創建gRPC服務器 497
24.5 創建聊天服務 498
24.6 更新服務器代碼以添加聊天服務 499
24.7 創建chat包 500
24.8 創建客戶端 501
24.9 運行服務器和客戶端 503
24.10 本課小結 503
24.11 本課練習 504
第25課 綜合練習:使用智能數據 505
25.1 項目概要 505
25.2 設計我們的API 506
25.3 實現gRPC服務器 508
25.3.1 地理位置服務器外殼 509
25.3.2 金融服務器外殼 517
25.4 創建API 529
25.4.1 實現getGeoLocationData端點 531
25.4.2 實現getQuote端點 532
25.4.3 更新api.go文件 533
25.5 本課小結 537
第26課 使用模塊 538
26.1 開始使用模塊 538
26.2 第一步:創建項目目錄 538
26.3 第二步:創建程序 539
26.4 第三步:創建測試程序 540
26.5 第四步:創建go.mod文件 540
26.6 第五步:對模塊進行測試 541
26.7 第六步:使用模塊 541
26.8 命名模塊函數 541
26.9 本課小結 542
26.10 本課練習 542
附錄A 文件權限和訪問權限 544