注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計Go語言從入門到精通

Go語言從入門到精通

Go語言從入門到精通

定 價:¥79.80

作 者: 謝瓊 著
出版社: 人民郵電出版社
叢編項:
標 簽: 暫缺

ISBN: 9787115520760 出版時間: 2021-02-01 包裝: 平裝
開本: 16開 頁數(shù): 406 字數(shù):  

內(nèi)容簡介

  本書主要內(nèi)容包括Go語言簡介、開發(fā)環(huán)境準備、快速基礎(chǔ)入門、數(shù)學科學領(lǐng)域的計算、開發(fā)一個自己的日常命令行工具、文件處理、數(shù)據(jù)格式分析與轉(zhuǎn)換、正則表達式、并發(fā)處理、數(shù)據(jù)采集和清理應用、網(wǎng)絡(luò)服務(wù)端應用、Web服務(wù)器、加密解密領(lǐng)域應用、網(wǎng)絡(luò)提供的各種API、常用Go語言技術(shù)的示例與研究、實用函數(shù)實例等。安排了大量實例代碼,介紹相關(guān)編程知識。

作者簡介

  謝瓊,計算機軟件、通信行業(yè)和外語在線教育領(lǐng)域?qū)<遥瑖艺J證系統(tǒng)分析師。在大型國企和世界50強IT跨國公司從事計算機系統(tǒng)、電信行業(yè)項目、外語在線教育項目、人工智能/深度學習領(lǐng)域項目多年,曾主持編寫國家電信行業(yè)安全標準,項目經(jīng)驗豐富,是人工智能英語分析系統(tǒng)“小仙英語伴讀”的創(chuàng)始人。精通十幾種計算機語言,擅長理論的落地、實用化,長期擔任企業(yè)內(nèi)部培訓講師和整體方案咨詢講師,課程教授方式深入淺出,對實例的講解簡單易懂,易于理解,尤其適合入門學習者。

圖書目錄

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

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號