本書是一部系統(tǒng)論述Go編程語言和實(shí)際應(yīng)用技術(shù)的圖書,全書共分為15章: 第1章~第9章講解Go語言的基本語法; 第10章~第15章講解Go語言的進(jìn)階知識。主要內(nèi)容包括: 編寫第一個Go語言程序、Go語言的語法基礎(chǔ)、Go語言的數(shù)據(jù)類型、運(yùn)算符、復(fù)合數(shù)據(jù)類型、條件語句、循環(huán)語句及跳轉(zhuǎn)語句、函數(shù)、自定義數(shù)據(jù)類型、錯誤處理、并發(fā)編程、正則表達(dá)式、訪問目錄和文件、網(wǎng)絡(luò)編程和數(shù)據(jù)庫編程。另外,每章后面都安排了動手練一練實(shí)踐環(huán)節(jié),旨在幫助讀者消化吸收本章知識點(diǎn),并在附錄A 中提供參考答案。為便于讀者高效學(xué)習(xí),快速掌握Go語言的編程方法,本書作者精心制作了完整的教學(xué)課件、源代碼與微課視頻,并提供在線答疑服務(wù)。本書適合零基礎(chǔ)入門的讀者,可作為高等院校和培訓(xùn)機(jī)構(gòu)的教材。
為什么寫作本書
2007年,谷歌的三位著名軟件工程專家羅勃·派克、肯·湯普遜和羅伯特·格瑞史莫認(rèn)為,現(xiàn)有的編程語言編程困難,編譯速度慢,運(yùn)行效率低,而計算機(jī)硬件卻已飛速發(fā)展,計算機(jī)編程語言迫切需要改變,以適應(yīng)計算機(jī)硬件的發(fā)展。他們以C語言為基礎(chǔ),參照其他編程語言,如C 、Java等,吸收這些編程語言的優(yōu)點(diǎn),摒棄其缺點(diǎn),設(shè)計了一套全新的靜態(tài)編譯型語言Go語言。
Go語言被稱為更好的C語言、互聯(lián)網(wǎng)的C語言、云計算的C語言,代表高性能、易用性和高并發(fā)處理能力。
許多讀者和學(xué)員亟待有一本能夠幫助他們快速入門Go語言編程的圖書。作者與清華大學(xué)出版社再次合作出版了這本《極簡Go: 新手編程之道》,本書是極簡開發(fā)者書庫中的一本。極簡開發(fā)者書庫秉承講解簡單、快速入門和易于掌握的原則,是為新手入門而設(shè)計的系列圖書。
讀者對象
本書是一本講解Go語言的基礎(chǔ)圖書,適合零基礎(chǔ)入門的讀者,可作為高校和培訓(xùn)機(jī)構(gòu)的Go語言教材。
相關(guān)資源
為了更好地為廣大讀者服務(wù),本書提供配套源代碼、教學(xué)課件、微課視頻和在線答疑服務(wù)。
如何使用書中配套源代碼
本書配套源代碼可以在清華大學(xué)出版社網(wǎng)站本書頁面下載。
致謝
感謝清華大學(xué)出版社盛東亮編輯提出的寶貴意見。感謝智捷課堂團(tuán)隊(duì)的趙志榮、趙大羽、關(guān)錦華、閆婷嬌、王馨然、關(guān)秀華和趙浩丞參與本書部分內(nèi)容的編寫。感謝趙浩丞手繪了書中全部插圖,并從專業(yè)的角度修改書中圖片,力求將本書內(nèi)容更加真實(shí)完美地奉獻(xiàn)給廣大讀者。感謝我的家人容忍我的忙碌,正是他們對我的關(guān)心和照顧,使我能抽出時間,投入精力專心編寫此書。
由于Go語言編程應(yīng)用不斷更新迭代,而作者水平有限,書中難免存在不妥之處,懇請讀者提出寶貴修改意見,以便再版時改進(jìn)。
編者2023年9月
第1章編寫第一個Go語言程序
微課視頻43分鐘
1.1使用Go Playground編寫程序Go語言代碼
1.2搭建開發(fā)環(huán)境
1.2.1Windows系統(tǒng)中搭建Go語言開發(fā)環(huán)境
1.2.2Linux系統(tǒng)中搭建Go語言開發(fā)環(huán)境
1.2.3macOS系統(tǒng)中搭建Go語言開發(fā)環(huán)境
1.3使用石器時代工具編寫Go語言代碼
1.3.1編寫程序
1.3.2編譯程序
1.3.3運(yùn)行程序
1.3.4代碼解釋
1.4使用鐵器時代工具編寫Go語言代碼
1.4.1LiteIDE
1.4.2Visual Studio Code
1.5Go語言的優(yōu)點(diǎn)
1.6如何獲得幫助
1.7動手練一練
第2章Go語言的語法基礎(chǔ)
微課視頻30分鐘
2.1標(biāo)識符與關(guān)鍵字
2.1.1標(biāo)識符
2.1.2關(guān)鍵字
2.2語句
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動手練一練
第3章Go語言的數(shù)據(jù)類型
微課視頻38分鐘
3.1Go語言的數(shù)據(jù)類型概述
3.2整數(shù)類型
3.3浮點(diǎn)類型
3.4復(fù)數(shù)類型
3.5布爾類型
3.6類型轉(zhuǎn)換
3.7字符串類型
3.7.1字符串表示
3.7.2字符轉(zhuǎn)義
3.7.3原始字符串
3.7.4操作字符串的常用函數(shù)
3.8動手練一練
第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)先級
4.8動手練一練
第5章復(fù)合數(shù)據(jù)類型
微課視頻40分鐘
5.1指針
5.1.1聲明指針變量
5.1.2空指針
5.1.3二級指針
5.2數(shù)組
5.2.1聲明數(shù)組
5.2.2訪問數(shù)組元素
5.3切片
5.3.1聲明切片
5.3.2使用切片操作符
5.3.3添加切片元素
5.4映射
5.4.1聲明映射
5.4.2訪問映射元素
5.4.3刪除元素
5.5遍歷容器
5.6動手練一練
第6章條件語句
微課視頻15分鐘
6.1if語句
6.1.1if結(jié)構(gòu)
6.1.2ifelse結(jié)構(gòu)
6.1.3ifelseif結(jié)構(gòu)
6.2switch語句
6.2.1一個case語句有多個值
6.2.2使用fallthrough關(guān)鍵字貫穿case語句
6.3動手練一練
第7章循環(huán)語句及跳轉(zhuǎn)語句
微課視頻16分鐘
7.1for循環(huán)語句
7.1.1基本形式的for循環(huán)語句
7.1.2簡化的for循環(huán)語句
7.2跳轉(zhuǎn)語句
7.2.1break語句
7.2.2使用標(biāo)簽的break語句
7.2.3continue語句
7.2.4使用標(biāo)簽的continue語句
7.2.5goto語句
7.3動手練一練
第8章函數(shù)
微課視頻39分鐘
8.1用戶自定義函數(shù)
8.2函數(shù)返回值
8.2.1返回單一值
8.2.2返回多個值
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動手練一練
第9章自定義數(shù)據(jù)類型
微課視頻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動手練一練
第10章錯誤處理
微課視頻23分鐘
10.1從一個問題開始
10.2使用error類型
10.3格式化錯誤信息
10.4自定義錯誤類型
10.5錯誤處理機(jī)制
10.5.1延遲執(zhí)行
10.5.2進(jìn)入宕機(jī)狀態(tài)
10.5.3從宕機(jī)狀態(tài)恢復(fù)
10.6動手練一練
第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無緩沖區(qū)通道和有緩沖區(qū)通道
11.4.1無緩沖區(qū)通道
11.4.2有緩沖區(qū)通道
11.5使用select語句
11.5.1基本的select用法
11.5.2默認(rèn)分支
11.6動手練一練
第12章正則表達(dá)式
微課視頻43分鐘
12.1使用regexp包
12.2編譯正則表達(dá)式
12.3編寫正則表達(dá)式
12.3.1元字符
12.3.2字符轉(zhuǎn)義
12.3.3使用元字符示例: 匹配開始與結(jié)束字符
12.3.4字符類
12.3.5字符類取反
12.3.6區(qū)間
12.3.7預(yù)定義字符類
12.3.8使用量詞
12.3.9貪婪量詞和懶惰量詞
12.3.10定義分組
12.4regexp包的高級功能
12.4.1字符串分割
12.4.2字符串替換
12.5動手練一練
第13章訪問目錄和文件
微課視頻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讀取整個文件
13.3.2逐行讀取文件
13.4寫入文件
13.4.1使用WriteFile()函數(shù)寫文件
13.4.2使用WriteString()函數(shù)寫文件
13.5動手練一練
第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通信過程
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請求
14.4.5發(fā)送POST請求
14.4.6案例: Downloader
14.5JSON文檔結(jié)構(gòu)
14.5.1JSON編碼
14.5.2JSON解碼
14.6動手練一練
第15章數(shù)據(jù)庫編程
微課視頻37分鐘
15.1MySQL數(shù)據(jù)庫管理系統(tǒng)
15.1.1安裝MySQL 8數(shù)據(jù)庫
15.1.2客戶端登錄服務(wù)器
15.1.3常見的管理命令
15.2編寫訪問數(shù)據(jù)庫程序
15.2.1MySQL驅(qū)動
15.2.2Go語言數(shù)據(jù)庫編程一般過程
15.2.3建立和關(guān)閉數(shù)據(jù)連接
15.2.4預(yù)處理SQL語句
15.2.5執(zhí)行SQL語句
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動手練一練
附錄A動手練一練參考答案