3dwoo大學簡體電腦書店
Go語言從入門到精通
( 簡體 字)
作者:謝瓊類別:1. -> 程式設計 -> Go語言
出版社:人民郵電出版社Go語言從入門到精通 3dWoo書號: 54104
詢問書籍請說出此書號!
有庫存
NT售價: 400
出版日:2/1/2021
頁數:406
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787115520760 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第1章 Go語言簡介 1
1.1 Go語言的發展歷史 1
1.2 Go語言的主要特點 1
第2章 開發環境準備 4
2.1 安裝Go語言 4
2.1.1 Windows系統下安裝Go語言 4
2.1.2 Mac OS X系統下安裝Go語言 8
2.1.3 Linux系統下安裝Go語言 8
2.2 打造更舒適的開發環境 9
2.2.1 修改Windows資源管理器的一些
顯示設置 9
2.2.2 命令提示符CMD的替代方案 9
2.2.3 文本文件編輯器 11
2.3 Go語言開發工具的選擇 11
2.3.1 LiteIDE 11
2.3.2 Visual Studio Code加Go語言
插件 11
2.3.3 其他開發工具 14
第3章 Go語言快速入門 15
3.1 初識Go語言——編寫、編譯和運行 15
3.1.1 怎樣輸入Go語言程序 15
3.1.2 怎樣編譯Go語言程序 17
3.1.3 怎樣執行Go語言程序 18
3.1.4 怎樣查看Go語言的文檔 19
3.2 Go語言程序的組織 20
3.2.1 Go語言中程序文件的組織方式 20
3.2.2 非執行包與包的引用 22
3.2.3 自己編寫非執行包 23
3.2.4 非執行包名與目錄的關系 24
3.2.5 用多級子目錄組織包結構 25
3.3 關鍵字等語言要素 26
3.4 變量 26
3.4.1 變量的基本概念 26
3.4.2 浮點數類型的變量 28
3.4.3 字符串類型的變量 29
3.4.4 布爾類型的變量 29
3.4.5 變量的命名 30
3.4.6 變量聲明和賦值的簡化形式 31
3.4.7 復合類型的變量 32
3.4.8 變量類型的轉換 34
3.4.9 指針類型的變量 35
3.4.10 變量的零值 36
3.5 表達式 37
3.6 函數(方法) 37
3.7 自定義數據類型 40
3.8 面向對象編程 42
3.9 條件判斷與分支 45
3.10 循環 46
3.11 并發處理:Go例程 48
3.12 注釋 49
3.13 程序編譯或運行時出現錯誤 50
3.14 總結的代碼 51
第4章 Go語言的基本語法與
 開發基礎 52
4.1 Go語言語法要素與代碼規范 52
4.1.1 文件和字符串編碼 52
4.1.2 語句、代碼塊與執行順序 53
4.1.3 語句分隔 53
4.1.4 語法記號 53
4.2 代碼格式化工具gofmt 54
4.3 常用的輔助性內置函數 55
4.3.1 內置的輸出信息函數print與
println 55
4.3.2 獲取數據長度的len函數 56
4.3.3 獲取變量容量的cap函數 57
4.3.4 用于復合類型數據的操作函數 57
4.3.5 用于處理異常的函數 58
4.4 格式化輸出函數fmt.Printf 58
4.4.1 整數格式化符%d 60
4.4.2 十六進制格式化符%x和%X 61
4.4.3 二進制格式化符%b 62
4.4.4 浮點數格式化符%f 62
4.4.5 其他浮點數格式化符 63
4.4.6 布爾類型的格式化符%t 64
4.4.7 Unicode碼相關格式化符%c、
%q和%U 64
4.4.8 字符串格式化符%s 65
4.4.9 指針格式化符%p 66
4.4.10 萬能格式化符 %v 66
4.4.11 輸出數值類型的格式化符%T 68
4.4.12 輸出%字符本身 68
4.5 獲取和使用第三方包 68
4.6 定義和使用常量 70
4.7 變量、函數等標識符聲明的作用范圍 72
4.8 tools包——編寫自己的函數庫 74
第5章 用Go語言進行數學、科學
 領域的計算 76
5.1 表達式 76
5.1.1 最簡單的表達式——單個數值 76
5.1.2 操作符在表達式中的作用 76
5.1.3 函數在表達式中的作用 79
5.1.4 表達式的組合與計算的優先級 80
5.1.5 表達式中數據類型的一致性要求 81
5.2 用表達式進行數學計算 81
5.2.1 體重指數 81
5.2.2 用表達式計算體重指數 82
5.2.3 使用命令行參數傳入體重和
身高的變量值 83
5.3 利用系統自帶的數學庫進行計算 85
5.3.1 查閱Go語言中的參考文檔 85
5.3.2 使用math.Pow函數進行平方
計算 86
5.3.3 用math/rand包生成隨機數 87
5.4 用Go語言進行科學計算 90
5.4.1 向量與余弦相似度概念簡介 90
5.4.2 計算向量余弦相似度的函數 91
5.5 使用math/big包避免計算過程中
 超大數溢出 93
5.5.1 big包的基本使用方法 93
5.5.2 用big包改進余弦相似度計算
函數 94
5.6 計算中的異常處理 95
5.6.1 Go語言中的匿名函數 95
5.6.2 Go語言的延遲處理機制 97
5.6.3 Go語言的異常處理機制 98
5.6.4 處理計算中的異常 100
5.6.5 Go語言中異常的傳遞順序 107
5.6.6 使用runtime庫輸出更多的異常
信息 108
5.7 使用第三方包進行更復雜的數學
 計算 109
5.7.1 Gonum包中用于矩陣運算的mat
子包簡介 109
5.7.2 矩陣乘法的計算過程 109
5.7.3 用gonum/mat子包實現矩陣
乘法 110
第6章 用Go語言開發一個
 命令行工具 113
6.1 命令行工具簡介 113
6.2 典型命令行工具的架構 113
6.3 基本的命令行工具clix程序框架 114
6.4 Go語言中的switch語句 115
6.5 clix的第一個命令:version 118
6.6 增加體重指數計算命令calbmi 118
6.6.1 tools包中增加判斷起始
子字符串的函數 118
6.6.2 子字符串的截取 119
6.6.3 tools包中增加判斷標志參數的
函數 120
6.6.4 編寫clix中的calbmi命令 120
6.6.5 增加命令行開關標志參數 121
6.6.6 使用flag包來分析命令行參數 123
6.7 第三個命令:數字排序 125
6.7.1 循環進階 125
6.7.2 冒泡法排序 130
6.7.3 用雙重循環實現冒泡法排序 131
6.7.4 命令行參數中傳入數字序列 131
6.7.5 在clix程序中加入冒泡法
排序的命令 133
6.8 Go語言中對典型代碼邏輯結構的
 支持 133
6.8.1 基本的代碼結構 134
6.8.2 利用標簽跳出或繼續外層循環 134
6.8.3 goto語句無條件跳轉 136
6.8.4 遞歸(調用自身函數) 137
第7章 Go語言中的字符串處理 138
7.1 字符串相關的基礎知識 138
7.1.1 字符串的基本概念 138
7.1.2 byte、uint8和int8類型 138
7.1.3 byte類型的切片([]byte)與
string 140
7.1.4 字符串的基本操作:取長度、
連接、截取等 140
7.1.5 用雙引號或反引號括起字符串的
區別 141
7.2 字符串支持多語言編碼的特殊
 處理 141
7.2.1 UTF-8編碼 142
7.2.2 rune類型和rune類型切片 143
7.2.3 用rune對字符串進行遍歷 144
7.3 常見的字符串操作 145
7.3.1 判斷字符串中是否含有某個子串 145
7.3.2 獲取字符串中子串的位置 146
7.3.3 獲取字符串中子串第n次出現的
位置 146
7.3.4 統計字符串中子串出現的次數 148
7.3.5 判斷字符串的起始或結尾子串 148
7.3.6 比較兩個字符串 149
7.3.7 去除字符串首尾空白或其他字符 150
7.3.8 替換字符串中的子串 152
7.3.9 字符串大小寫的轉換 152
7.3.10 切分字符串 153
7.3.11 合并字符串切片 154
7.3.12 生成重復子串組成的字符串 155
7.3.13 幾個Unicode操作 155
7.4 高級字符串操作 157
7.4.1 生成隨機字符串 157
7.4.2 用strings.Builder實現不斷增長的
字符串 159
7.4.3 用于讀取字符串內容的
strings.Reader 161
7.4.4 字符串與數字的相互轉化 162
7.4.5 用fmt.Sprintf實現靈活的字符串
處理 169
7.4.6 用fmt.Sscanf從字符串中讀取
信息 170
第8章 Go語言中的正則表達式 173
8.1 正則表達式的基本概念與用法 173
8.1.1 用正則表達式判斷字符串是否
含有符合一定規則的子串 173
8.1.2 用正則表達式從字符串中提取
符合一定規則的子串 174
8.1.3 用通配符“.”匹配任意字符 175
8.1.4 貪婪與非貪婪匹配 176
8.1.5 分組提取子串 177
8.1.6 提取所有符合條件的帶捕獲組的
匹配結果 178
8.1.7 替換符合正則表達式的子串 179
8.1.8 轉義字符 180
8.2 正則表達式進階知識 181
8.2.1 單個字符的表達 181
8.2.2 表達字符出現的次數(數量) 184
8.2.3 非字符匹配(位置匹配) 185
8.2.4 正則表達式中使用標志位進行
設置 186
8.2.5 可選子串匹配 187
8.2.6 非捕獲組 187
8.2.7 獲取匹配到子串的索引位置 188
8.2.8 用正則表達式分割字符串 188
8.2.9 判斷整個字符串是否匹配正則
表達式 189
8.2.10 按字節進行正則表達式匹配 189
第9章 Go語言文件處理 190
9.1 Go語言中文本文件的處理 190
9.1.1 文本文件的編碼 190
9.1.2 文本文件的打開、讀取與關閉等
基本操作 191
9.1.3 從較大的文本文件中讀取完整
內容 193
9.1.4 較簡單的讀取完整文本的方法 194
9.1.5 更簡單的讀取完整文本的方法 195
9.1.6 從文本文件中讀取指定
數量的行 196
9.1.7 將字符串寫入文本文件 198
9.1.8 向已有的文本文件中追加內容 199
9.1.9 用移動文件指針的方法向
文件中追加內容 200
9.1.10 文件、目錄的其他基本操作 201
9.1.11 文本文件編碼轉換 208
9.1.12 文本排序 215
9.1.13 超大文本文件排序 218
9.1.14 文本查重、去重 219
9.2 Go語言中二進制文件的處理 219
9.2.1 Go語言中用二進制文件存儲
數據 219
9.2.2 自定義文件格式存儲大量數據
記錄 224
9.3 文件處理總結 227
第10章 Go語言中數據格式的
 分析與轉換 229
10.1 常見的數據交換格式 229
10.2 XML格式的處理 229
10.2.1 將數據序列化成XML格式 229
10.2.2 將XML格式的文本反序列化 232
10.2.3 省略字段、字符字段和原始
 XML文本字段 234
10.2.4 自行控制某數據類型的XML
 序列化/反序列化 235
10.3 JSON格式的處理 237
10.3.1 將數據序列化成JSON格式 237
10.3.2 將JSON格式的文本反序列化 239
10.3.3 JSON序列化/反序列化時使用
 描述字符串 240
10.3.4 自行控制自定義數據類型的
 JSON序列化/反序列化 242
10.3.5 用空接口類型實現復雜結構的
 JSON序列化 244
10.3.6 JSON解析中空接口類型的
 應用 246
10.3.7 使用第三方包進行JSON格式的
 序列化與反序列化 248
第11章 Go語言的并發處理 250
11.1 Go語言并發編程基礎 250
11.2 并發處理時的共享沖突 253
11.3 使用通道類型實現安全的數據共享 255
11.4 使用通道作為數據訪問的令牌 257
11.5 使用通道實現多任務的歸并 258
11.6 用select實現多通道的歸并 260
11.7 select中實現超時中止 262
11.8 用單向通道自定義超時函數 263
11.9 使用sync包進行傳統的并發處理 265
11.9.1 用sync.WaitGroup實現
 goroutine歸并 266
11.9.2 用鎖(互斥量)實現
 goroutine同步 267
11.9.3 用讀寫鎖(互斥量)做“多
 讀少寫”型并發任務 268
第12章 Go語言進行數據庫開發 270
12.1 Go語言進行數據庫開發的一般
 方式 270
12.2 安裝SQLite數據庫驅動 270
12.3 基本的數據庫操作——新建庫表、
 插入記錄和查詢 270
12.4 刪除記錄、準備SQL查詢等操作 273
12.5 獲取記錄條數、刪除庫表等操作 275
12.6 SQL型數據庫開發總結 276
12.7 NoSQL型數據庫開發示例 276
第13章 Go語言進行網絡服務的
 開發 280
13.1 C/S架構與B/S架構的概念 280
13.2 基于Socket通信的客戶端/服務器
 模式 280
13.3 基于TCP的Socket客戶端/服務器
 系統 281
13.4 典型的Socket服務器的例子 281
13.5 典型的Socket客戶端的例子 283
13.6 典型的UDP服務器的例子 286
13.7 典型的UDP客戶端的例子 287
13.8 用Go語言搭建簡單的Web服務器 288
13.9 搭建簡單的文件服務器 290
13.10 搭建靜態文件型的Web網站
 服務器 290
13.11 混合不同方式的Web服務器 293
13.12 搭建提供網絡接口服務的API
 服務器 294
13.13 Web服務器的路由管理 297
13.14 動態網頁的生成 299
13.15 提供HTTPS方式訪問 302
13.16 第三方的Web開發包 303
13.17 Go語言中實現Web客戶端 305
第14章 Go語言進行繪圖和圖像
 處理 307
14.1 基本的點繪圖 307
14.2 繪制曲線圖 308
14.3 繪制有填充色的形狀 311
14.4 實現漸變的填充色 314
14.5 使用第三方庫更方便實現復雜
 圖形繪制 318
14.6 繪制平滑曲線 321
14.7 在圖片上繪制文字 323
14.8 使用freetype包進行文字繪制 326
14.9 用image/draw包實現靈活的圖像
 處理 328
14.9.1 實現圖片區域復制 328
14.9.2 用draw.Draw函數進行顏色
 填充 333
14.9.3 image包中的幾個重要對象 333
14.9.4 用顏色填充繪制矩形框 334
14.9.5 將圖片變成全透明 334
14.9.6 復制原圖中的區域到目標圖中
 另一個區域 335
14.9.7 使用蒙版復制不規則區域 335
14.9.8 自定義image.Image類型的蒙版
 對象 337
14.9.9 圖片色彩空間的轉換 338
14.10 在Web中輸出圖像 339
第15章 Go語言進行圖形界面
 開發 343
15.1 使用Qt開發圖形界面 343
15.1.1 Go結合Qt開發環境的搭建 343
15.1.2 Go結合Qt開發基礎示例 344
15.1.3 部署therecipe/qt示例程序 346
15.1.4 在goroutine中安全操作圖形
 界面 347
15.2 使用govcl包開發圖形界面 355
15.2.1 使用govcl包開發圖形界面的
 基礎示例 355
15.2.2 govcl包中避免并發界面操作
 沖突 358
15.3 Go語言中開發基于Web的圖形
 界面 360
第16章 Go語言的反射機制 361
16.1 用反射機制獲取基本類型的信息 361
16.2 用反射獲取復雜類型的信息 362
16.3 函數的傳值與傳引用 363
16.4 用反射獲取結構類型(對象)的
 成員信息 364
16.5 用反射獲取空接口類型數據的
 實際類型 366
16.6 用Kind函數獲取基類型 367
16.7 判斷對象是否實現了某方法或接口 370
16.8 動態調用對象的方法 372
16.9 修改數據 374
16.10 實例:JSON處理 375
第17章 Go語言的測試與性能 378
17.1 功能測試 378
17.1.1 基本的功能測試 378
17.1.2 功能測試不通過的情況 379
17.1.3 立即中止測試用例函數 380
17.1.4 簡化的中止測試用例函數 381
17.1.5 跳過測試用例 381
17.1.6 進行并發測試 382
17.1.7 指定運行的測試用例 383
17.2 性能測試 384
17.2.1 基本的性能測試 384
17.2.2 根據性能測試結果進行優化和
 比對 386
17.2.3 指定性能測試的時長 387
17.2.4 手動控制測試計時 388
17.2.5 測試內存分配的情況 388
第18章 Go語言與其他語言的
 結合運用 390
18.1 Cgo 390
18.1.1 Go語言中直接編寫C語言
 代碼 390
18.1.2 Go語言中調用C語言
 文件中的代碼 393
18.1.3 Go語言中編寫函數供
 C語言調用 394
18.1.4 Cgo的一些局限 396
18.2 Go語言中運行其他腳本語言 396
18.2.1 Tengo腳本語言 396
18.2.2 實現JavaScript虛擬機的
 otto包 398
18.2.3 實現Lua語言虛擬機的
 go-lua包 399
18.3 Go語言中直接執行其他程序或調用
 系統命令 400
18.3.1 調用應用程序并讀取其輸出 400
18.3.2 使用管道從程序的輸出中接收
 信息 402
18.4 Go語言與WebAssembly 404
本書主要內容包括Go語言簡介、開發環境準備、快速基礎入門、數學科學領域的計算、開發一個自己的日常命令行工具、文件處理、數據格式分析與轉換、正則表達式、并發處理、數據采集和清理應用、網絡服務端應用、Web服務器、加密解密領域應用、網絡提供的各種API、常用Go語言技術的示例與研究、實用函數實例等。安排了大量實例代碼,介紹相關編程知識。
pagetop