GO 語言編程從入門到實踐

黃永祥

  • GO 語言編程從入門到實踐-preview-1
  • GO 語言編程從入門到實踐-preview-2
  • GO 語言編程從入門到實踐-preview-3
GO 語言編程從入門到實踐-preview-1

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

商品描述

本書是一本來自一線開發者的Go語言編程入門書,深入淺出地講述了Go語言的語法特性和編程實踐,全書分為基礎和項目兩部分,基礎部分主要介紹Go語言開發環境的搭建、基礎語法、數據類型、指針、內置容器、函數、結構體、接口、反射、並發編程、包的應用與管理、目錄與文件管理、時間管理、數據庫編程等,項目部分主要介紹網頁自動化測試程序、網絡爬蟲程序、網絡信息反饋網站的開發實踐,此外,還介紹了Go語言程序的編譯方法。本書各章還提供了近20個動手練習小項目,便於讀者邊學邊練,迅速提升編程技能。 本書通俗易懂,體系完備,註重實踐,適合對Go語言感興趣的各層次讀者使用。

目錄大綱

目    錄

 

第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