Go 語言從入門到精通

謝瓊

  • 出版商: 人民郵電
  • 出版日期: 2021-02-01
  • 定價: $479
  • 售價: 8.5$407
  • 語言: 簡體中文
  • 頁數: 406
  • 裝訂: 平裝
  • ISBN: 7115520763
  • ISBN-13: 9787115520760
  • 相關分類: Go 程式語言
  • 立即出貨 (庫存 < 4)

  • Go 語言從入門到精通-preview-1
  • Go 語言從入門到精通-preview-2
Go 語言從入門到精通-preview-1

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

商品描述

本書主要內容包括Go語言簡介、開發環境準備、快速基礎入門、數學科學領域的計算、開發一個自己的日常命令行工具、文件處理、數據格式分析與轉換、正則表達式、並發處理、數據採集和清理應用、網絡服務端應用、Web服務器、加密解密領域應用、網絡提供的各種API、常用Go語言技術的示例與研究、實用函數實例等。安排了大量實例代碼,介紹相關編程知識。

作者簡介

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

目錄大綱

目錄

第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