Go並發編程實戰

汪明

  • 出版商: 清華大學
  • 出版日期: 2020-09-01
  • 定價: $414
  • 售價: 8.5$352
  • 語言: 簡體中文
  • ISBN: 7302560447
  • ISBN-13: 9787302560449
  • 相關分類: Go 程式語言雲端運算
  • 立即出貨

  • Go並發編程實戰-preview-1
  • Go並發編程實戰-preview-2
  • Go並發編程實戰-preview-3
Go並發編程實戰-preview-1

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

商品描述

Go語言在多核硬件架構、超大規模分佈式計算集群和Web應用上具有明顯的優勢,目前Google、Facebook、AWS、Mozilla、七牛、阿裡、騰訊、百度、京東等大公司都已經開始使用Go語言開發其雲計算產品。 本書分為12章,第1章介紹Go語言的基本開發環境;第2章介紹Go語言的語法基礎;第3章介紹Go語言的函數;第4章介紹Go語言的流程控制與錯誤處理;第5章介紹Go語言中的結構體、數組、切片和字典等;第6章介紹Go語言中的指針;第7章介紹Go語言的面向對象用法;第8章介紹Go語言文件讀寫;第9章介紹Go語言的並發編程;第10章介紹Go語言的反射特性;第11章介紹Go語言如何構建Web服務;第12章用Go語言實現了一個並發聊天實戰項目。本書配套源碼、課件、開發環境和教學視頻。 本書內容詳盡、示例豐富,是一本Go語言的入門教材,非常適合有一定編程基礎的讀者學習使用。當然,本書也適合對編程感興趣的讀者學習。同時,本書也非常適合高等院校的師生學習閱讀,可作為高等院校電腦及相關專業的教材。

作者簡介

汪明,碩士,徐州軟件協會副理事長,某創業公司合夥人。從事軟件行業十餘年,發表論文數十篇,擅長JavaScript、C、Java、等傳統語言,也擅長TypeScript、Go等新語言。著有圖書《TypeScript實戰》。

目錄大綱

目   錄

第1章  搭建Go開發環境 1

1.1  Go的語言特性 1

1.2  安裝 4

1.2.1  Windows下安裝Go 5

1.2.2  Linux下安裝Go 7

1.3  配置環境變量 7

1.3.1  Windows下的環境變量配置 7

1.3.2  Linux下的環境變量配置 8

1.4  第一個Go程序 9

1.4.1  搭建本書項目代碼結構 9

1.4.2  創建並運行第一個Go程序 10

1.4.3  Go程序的編譯 11

1.4.4  Go的幫助系統 12

1.5  運行時 15

1.6  編譯器 16

1.6.1  詞法分析和語法分析 17

1.6.2  類型檢查 17

1.6.3  生成SSA中間代碼 17

1.6.4  生成機器代碼 18

1.7  Go程序的集成開發環境 18

1.8  演練:Exit自動退出程序 23

1.9  本章小結 25

第2章  Go程序的基礎要素 26

2.1  命名規範 26

2.2  包 27

2.2.1  包的導入 29

2.2.2  包的嵌套 32

2.2.3  特殊的init函數 33

2.3  數據類型 35

2.3.1  字符串類型 36

2.3.2  數值類型 38

2.3.3  布爾類型 39

2.3.4  派生類型 40

2.4  常量 40

2.5  變量 42

2.6  運算符 44

2.6.1  算術運算符 44

2.6.2  關系運算符 45

2.6.3  邏輯運算符 46

2.6.4  位運算符 47

2.6.5  賦值運算符 48

2.6.6  特殊運算符 49

2.6.7  運算符的優先級 50

2.7  註釋 50

2.8  類型轉換 51

2.9  演練:原子計算器 54

2.10  小結 55

第3章  函數 56

3.1  函數的結構 57

3.1.1  Go語言函數的基本結構 57

3.1.2  函數中的變量存儲(堆棧) 58

3.1.3  函數返回函數 60

3.2  函數返回多個值的特性 61

3.3  作用域 62

3.4  匿名函數 63

3.4.1  匿名函數的即時調用 63

3.4.2  匿名函數的重復調用 64

3.5  變長函數 65

3.6  遞歸函數 66

3.6.1  使用遞歸函數求解斐波那契數列 66

3.6.2  使用循環代替遞歸的方法 67

3.7  回調函數 68

3.8  閉包 70

3.9  defer關鍵字 71

3.10  演練:原子計算器2.0迭代版 72

3.11  小結 74

第4章  流程控制與錯誤處理 75

4.1  if判斷 75

4.1.1  if語句的基本語法 75

4.1.2  if語句中的變量作用域 77

4.2  switch條件判斷語句 78

4.2.1  switch語句中的基本語法 78

4.2.2  fallthrough穿透 80

4.2.3  case多個表達式 81

4.2.4  switch省略判斷條件 82

4.3  for循環語句 83

4.4  break與continue 85

4.5  Go的錯誤處理機制 86

4.5.1  error 86

4.5.2  panic 87

4.6  演練:哲學的三段論 88

4.7  小結 93

第5章  復合數據類型 94

5.1  type關鍵字 94

5.2  struct類型 97

5.2.1  聲明struct 98

5.2.2  struct作為函數的參數 100

5.2.3  給struct定義方法 102

5.2.4  struct嵌套 102

5.3  匿名struct類型 103

5.4  數組 106

5.4.1  創建數組 106

5.4.2  數組作為函數的參數 108

5.4.3  二維數組 110

5.4.4  數組元素是struct 111

5.5  切片 112

5.5.1  切片的內部實現 113

5.5.2  切片的切割 115

5.5.3  切片的擴容 118

5.5.4  切片作為函數的參數 120

5.6  字典 122

5.6.1  創建字典 122

5.6.2  字典作為函數的參數 123

5.7  range關鍵字 124

5.8  演練:內存數據庫 126

5.9  小結 135

第6章  指針 136

6.1  內存地址 136

6.2  指針的應用 141

6.2.1  什麽是指針 141

6.2.2  聲明指針 142

6.2.3  關鍵字new 142

6.2.4  獲取元素地址 143

6.2.5  unsafe包 145

6.2.6  指針的指針 147

6.3  野指針 148

6.4  值傳參與地址傳參 149

6.5  演練:Go單向鏈表的實現 151

6.6  小結 157

第7章  面向對象和接口 158

7.1  結構體實現封裝 158

7.2  組合實現繼承 161

7.3  接口實現 163

7.4  類型判斷與斷言 166

7.5  接口實現多態 169

7.6  演練:SQL生成器的實現 171

7.7  小結 179

第8章  文件讀寫 180

8.1  文件讀取 180

8.1.1  整塊讀取 180

8.1.2  分字節讀取 183

8.1.3  分行讀取 185

8.2  文件寫入 187

8.2.1  整塊寫入 187

8.2.2  分字節寫入 189

8.2.3  分行寫入 191

8.3  自己開發io包下的讀寫接口 192

8.4  目錄操作 195

8.4.1  目錄的基本操作 195

8.4.2  目錄的遍歷 197

8.5  演練:property配置文件的操作 198

8.6  小結 200

第9章  圖解並發編程 201

9.1  單核並發 202

9.2  鎖機制 207

9.3  並行——多核並行 211

9.4  Go調度器 216

9.5  協程 218

9.6  協程間通信 223

9.6.1  共享變量 223

9.6.2  通道 224

9.7  無緩沖通道 225

9.8  有緩沖通道 232

9.9  通道和緩沖生成I/O流 235

9.10  協程調試 236

9.10.1  死鎖 236

9.10.2  數據競爭 237

9.10.3  協程泄漏 240

9.11  協程性能測試 244

9.11.1  Go語言自帶的測試工具 244

9.11.2  性能測試工具pprof 246

9.11.3  追蹤分析工具go tool trace 249

9.12  演練:單機MapReduce單詞統計 252

9.13  小結 258

第10章  反射 259

10.1  反射的概念和基本用法 259

10.2  獲取結構體字段和方法 265

10.3  反射動態修改值 268

10.4  獲取結構體字段標識 270

10.5  判斷是否實現接口 272

10.6  動態調用方法 274

10.7  演練:ORM基本實現 276

10.8  小結 282

第11章  Go的Web服務 283

11.1  HTTP/HTTPS 283

11.1.1  HTTP協議原理 284

11.1.2  HTTPS協議原理 285

11.1.3  Go語言的net/http包 286

11.1.4  使用Go語言構建HTTP Web服務程序 287

11.2  WebSocket 294

11.2.1  WebSocket協議原理 294

11.2.2  使用Go語言實現WebSocket服務端 296

11.2.3  使用Go語言實現WebSocket客戶端 298

11.3  SSE 299

11.3.1  SSE技術原理 299

11.3.2  使用Go語言實現SSE通信 300

11.4  演練:構建自己的Web服務器 305

11.5  小結 313

第12章  實戰:並發聊天 314

12.1  需求描述 314

12.2  需求分析 315

12.3  技術選型 316

12.4  架構 317

12.5  代碼分析 319

12.6  小結 334