為什么寫(xiě)作本書(shū)
2007年,谷歌的三位著名軟件工程專(zhuān)家羅勃·派克、肯·湯普遜和羅伯特·格瑞史莫認(rèn)為,現(xiàn)有的編程語(yǔ)言編程困難,編譯速度慢,運(yùn)行效率低,而計(jì)算機(jī)硬件卻已飛速發(fā)展,計(jì)算機(jī)編程語(yǔ)言迫切需要改變,以適應(yīng)計(jì)算機(jī)硬件的發(fā)展。他們以C語(yǔ)言為基礎(chǔ),參照其他編程語(yǔ)言,如C 、Java等,吸收這些編程語(yǔ)言的優(yōu)點(diǎn),摒棄其缺點(diǎn),設(shè)計(jì)了一套全新的靜態(tài)編譯型語(yǔ)言Go語(yǔ)言。
Go語(yǔ)言被稱(chēng)為更好的C語(yǔ)言、互聯(lián)網(wǎng)的C語(yǔ)言、云計(jì)算的C語(yǔ)言,代表高性能、易用性和高并發(fā)處理能力。
許多讀者和學(xué)員亟待有一本能夠幫助他們快速入門(mén)Go語(yǔ)言編程的圖書(shū)。作者與清華大學(xué)出版社再次合作出版了這本《極簡(jiǎn)Go: 新手編程之道》,本書(shū)是極簡(jiǎn)開(kāi)發(fā)者書(shū)庫(kù)中的一本。極簡(jiǎn)開(kāi)發(fā)者書(shū)庫(kù)秉承講解簡(jiǎn)單、快速入門(mén)和易于掌握的原則,是為新手入門(mén)而設(shè)計(jì)的系列圖書(shū)。
讀者對(duì)象
本書(shū)是一本講解Go語(yǔ)言的基礎(chǔ)圖書(shū),適合零基礎(chǔ)入門(mén)的讀者,可作為高校和培訓(xùn)機(jī)構(gòu)的Go語(yǔ)言教材。
相關(guān)資源
為了更好地為廣大讀者服務(wù),本書(shū)提供配套源代碼、教學(xué)課件、微課視頻和在線答疑服務(wù)。
如何使用書(shū)中配套源代碼
本書(shū)配套源代碼可以在清華大學(xué)出版社網(wǎng)站本書(shū)頁(yè)面下載。
致謝
感謝清華大學(xué)出版社盛東亮編輯提出的寶貴意見(jiàn)。感謝智捷課堂團(tuán)隊(duì)的趙志榮、趙大羽、關(guān)錦華、閆婷嬌、王馨然、關(guān)秀華和趙浩丞參與本書(shū)部分內(nèi)容的編寫(xiě)。感謝趙浩丞手繪了書(shū)中全部插圖,并從專(zhuān)業(yè)的角度修改書(shū)中圖片,力求將本書(shū)內(nèi)容更加真實(shí)完美地奉獻(xiàn)給廣大讀者。感謝我的家人容忍我的忙碌,正是他們對(duì)我的關(guān)心和照顧,使我能抽出時(shí)間,投入精力專(zhuān)心編寫(xiě)此書(shū)。
由于Go語(yǔ)言編程應(yīng)用不斷更新迭代,而作者水平有限,書(shū)中難免存在不妥之處,懇請(qǐng)讀者提出寶貴修改意見(jiàn),以便再版時(shí)改進(jìn)。
編者2023年9月
第1章編寫(xiě)第一個(gè)Go語(yǔ)言程序
微課視頻43分鐘
1.1使用Go Playground編寫(xiě)程序Go語(yǔ)言代碼
1.2搭建開(kāi)發(fā)環(huán)境
1.2.1Windows系統(tǒng)中搭建Go語(yǔ)言開(kāi)發(fā)環(huán)境
1.2.2Linux系統(tǒng)中搭建Go語(yǔ)言開(kāi)發(fā)環(huán)境
1.2.3macOS系統(tǒng)中搭建Go語(yǔ)言開(kāi)發(fā)環(huán)境
1.3使用石器時(shí)代工具編寫(xiě)Go語(yǔ)言代碼
1.3.1編寫(xiě)程序
1.3.2編譯程序
1.3.3運(yùn)行程序
1.3.4代碼解釋
1.4使用鐵器時(shí)代工具編寫(xiě)Go語(yǔ)言代碼
1.4.1LiteIDE
1.4.2Visual Studio Code
1.5Go語(yǔ)言的優(yōu)點(diǎn)
1.6如何獲得幫助
1.7動(dòng)手練一練
第2章Go語(yǔ)言的語(yǔ)法基礎(chǔ)
微課視頻30分鐘
2.1標(biāo)識(shí)符與關(guān)鍵字
2.1.1標(biāo)識(shí)符
2.1.2關(guān)鍵字
2.2語(yǔ)句
2.3變量
2.3.1聲明變量
2.3.2聲明短變量
2.4常量
2.5格式化輸出
2.6注釋
2.7包
2.7.1聲明包
2.7.2導(dǎo)入包
2.7.3自定義包
2.7.4為包提供別名
2.7.5匿名導(dǎo)入
2.8動(dòng)手練一練
第3章Go語(yǔ)言的數(shù)據(jù)類(lèi)型
微課視頻38分鐘
3.1Go語(yǔ)言的數(shù)據(jù)類(lèi)型概述
3.2整數(shù)類(lèi)型
3.3浮點(diǎn)類(lèi)型
3.4復(fù)數(shù)類(lèi)型
3.5布爾類(lèi)型
3.6類(lèi)型轉(zhuǎn)換
3.7字符串類(lèi)型
3.7.1字符串表示
3.7.2字符轉(zhuǎn)義
3.7.3原始字符串
3.7.4操作字符串的常用函數(shù)
3.8動(dòng)手練一練
第4章運(yùn)算符
微課視頻20分鐘
4.1算術(shù)運(yùn)算符
4.2關(guān)系運(yùn)算符
4.3邏輯運(yùn)算符
4.4位運(yùn)算符
4.5賦值運(yùn)算符
4.6其他運(yùn)算符
4.7運(yùn)算符優(yōu)先級(jí)
4.8動(dòng)手練一練
第5章復(fù)合數(shù)據(jù)類(lèi)型
微課視頻40分鐘
5.1指針
5.1.1聲明指針變量
5.1.2空指針
5.1.3二級(jí)指針
5.2數(shù)組
5.2.1聲明數(shù)組
5.2.2訪問(wèn)數(shù)組元素
5.3切片
5.3.1聲明切片
5.3.2使用切片操作符
5.3.3添加切片元素
5.4映射
5.4.1聲明映射
5.4.2訪問(wèn)映射元素
5.4.3刪除元素
5.5遍歷容器
5.6動(dòng)手練一練
第6章條件語(yǔ)句
微課視頻15分鐘
6.1if語(yǔ)句
6.1.1if結(jié)構(gòu)
6.1.2ifelse結(jié)構(gòu)
6.1.3ifelseif結(jié)構(gòu)
6.2switch語(yǔ)句
6.2.1一個(gè)case語(yǔ)句有多個(gè)值
6.2.2使用fallthrough關(guān)鍵字貫穿case語(yǔ)句
6.3動(dòng)手練一練
第7章循環(huán)語(yǔ)句及跳轉(zhuǎn)語(yǔ)句
微課視頻16分鐘
7.1for循環(huán)語(yǔ)句
7.1.1基本形式的for循環(huán)語(yǔ)句
7.1.2簡(jiǎn)化的for循環(huán)語(yǔ)句
7.2跳轉(zhuǎn)語(yǔ)句
7.2.1break語(yǔ)句
7.2.2使用標(biāo)簽的break語(yǔ)句
7.2.3continue語(yǔ)句
7.2.4使用標(biāo)簽的continue語(yǔ)句
7.2.5goto語(yǔ)句
7.3動(dòng)手練一練
第8章函數(shù)
微課視頻39分鐘
8.1用戶自定義函數(shù)
8.2函數(shù)返回值
8.2.1返回單一值
8.2.2返回多個(gè)值
8.2.3命名函數(shù)返回值
8.3可變參數(shù)函數(shù)
8.4函數(shù)式編程
8.4.1匿名函數(shù)
8.4.2函數(shù)作為返回值使用
8.4.3函數(shù)作為參數(shù)使用
8.5閉包與捕獲變量
8.6動(dòng)手練一練
第9章自定義數(shù)據(jù)類(lèi)型
微課視頻20分鐘
9.1結(jié)構(gòu)體
9.1.1聲明結(jié)構(gòu)體
9.1.2實(shí)例化結(jié)構(gòu)體
9.1.3結(jié)構(gòu)體指針
9.1.4結(jié)構(gòu)體嵌套
9.2為結(jié)構(gòu)體添加方法
9.3定義接口
9.4實(shí)現(xiàn)接口
9.5動(dòng)手練一練
第10章錯(cuò)誤處理
微課視頻23分鐘
10.1從一個(gè)問(wèn)題開(kāi)始
10.2使用error類(lèi)型
10.3格式化錯(cuò)誤信息
10.4自定義錯(cuò)誤類(lèi)型
10.5錯(cuò)誤處理機(jī)制
10.5.1延遲執(zhí)行
10.5.2進(jìn)入宕機(jī)狀態(tài)
10.5.3從宕機(jī)狀態(tài)恢復(fù)
10.6動(dòng)手練一練
第11章并發(fā)編程
微課視頻42分鐘
11.1進(jìn)程、線程和協(xié)程
11.1.1進(jìn)程
11.1.2線程
11.1.3協(xié)程
11.2通道
11.2.1聲明通道
11.2.2發(fā)送和接收數(shù)據(jù)
11.2.3關(guān)閉通道
11.2.4遍歷通道
11.3單向通道和雙向通道
11.4無(wú)緩沖區(qū)通道和有緩沖區(qū)通道
11.4.1無(wú)緩沖區(qū)通道
11.4.2有緩沖區(qū)通道
11.5使用select語(yǔ)句
11.5.1基本的select用法
11.5.2默認(rèn)分支
11.6動(dòng)手練一練
第12章正則表達(dá)式
微課視頻43分鐘
12.1使用regexp包
12.2編譯正則表達(dá)式
12.3編寫(xiě)正則表達(dá)式
12.3.1元字符
12.3.2字符轉(zhuǎn)義
12.3.3使用元字符示例: 匹配開(kāi)始與結(jié)束字符
12.3.4字符類(lèi)
12.3.5字符類(lèi)取反
12.3.6區(qū)間
12.3.7預(yù)定義字符類(lèi)
12.3.8使用量詞
12.3.9貪婪量詞和懶惰量詞
12.3.10定義分組
12.4regexp包的高級(jí)功能
12.4.1字符串分割
12.4.2字符串替換
12.5動(dòng)手練一練
第13章訪問(wèn)目錄和文件
微課視頻33分鐘
13.1目錄管理
13.1.1創(chuàng)建目錄
13.1.2刪除目錄
13.1.3重命名目錄
13.2文件管理
13.2.1獲取文件名
13.2.2獲取目錄名
13.2.3獲取文件擴(kuò)展名
13.2.4連接路徑
13.2.5分割路徑
13.2.6查找文件
13.3讀取文件
13.3.1讀取整個(gè)文件
13.3.2逐行讀取文件
13.4寫(xiě)入文件
13.4.1使用WriteFile()函數(shù)寫(xiě)文件
13.4.2使用WriteString()函數(shù)寫(xiě)文件
13.5動(dòng)手練一練
第14章網(wǎng)絡(luò)編程
微課視頻90分鐘
14.1網(wǎng)絡(luò)基礎(chǔ)
14.1.1網(wǎng)絡(luò)結(jié)構(gòu)
14.1.2TCP/IP
14.1.3IP地址
14.1.4端口
14.2TCP Socket低層次網(wǎng)絡(luò)編程
14.2.1TCP Socket通信概述
14.2.2TCP Socket通信過(guò)程
14.2.3TCP服務(wù)器端
14.2.4TCP客戶端
14.2.5案例: 文件上傳工具
14.3UDP Socket低層次網(wǎng)絡(luò)編程
14.3.1UDP服務(wù)器端
14.3.2UDP客戶端
14.4高層次網(wǎng)絡(luò)編程
14.4.1URL概念
14.4.2HTTP/HTTPS
14.4.3搭建自己的Web服務(wù)器
14.4.4發(fā)送GET請(qǐng)求
14.4.5發(fā)送POST請(qǐng)求
14.4.6案例: Downloader
14.5JSON文檔結(jié)構(gòu)
14.5.1JSON編碼
14.5.2JSON解碼
14.6動(dòng)手練一練
第15章數(shù)據(jù)庫(kù)編程
微課視頻37分鐘
15.1MySQL數(shù)據(jù)庫(kù)管理系統(tǒng)
15.1.1安裝MySQL 8數(shù)據(jù)庫(kù)
15.1.2客戶端登錄服務(wù)器
15.1.3常見(jiàn)的管理命令
15.2編寫(xiě)訪問(wèn)數(shù)據(jù)庫(kù)程序
15.2.1MySQL驅(qū)動(dòng)
15.2.2Go語(yǔ)言數(shù)據(jù)庫(kù)編程一般過(guò)程
15.2.3建立和關(guān)閉數(shù)據(jù)連接
15.2.4預(yù)處理SQL語(yǔ)句
15.2.5執(zhí)行SQL語(yǔ)句
15.3案例: 員工表增、刪、改、查操作
15.3.1創(chuàng)建員工表
15.3.2插入員工數(shù)據(jù)
15.3.3更新員工數(shù)據(jù)
15.3.4刪除員工數(shù)據(jù)
15.3.5按照主鍵查詢員工數(shù)據(jù)
15.3.6查詢所有員工數(shù)據(jù)
15.4動(dòng)手練一練
附錄A動(dòng)手練一練參考答案