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週)

  • Go職場必備-preview-1
  • Go職場必備-preview-2
  • Go職場必備-preview-3
Go職場必備-preview-1

買這商品的人也買了...

相關主題

商品描述

主要內容 ● 如何配置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