Go語言零基礎入門(微課視頻版)
郭志勇
相關主題
商品描述
"本書以Go語言為主線,內容循序漸進,採用先實踐再理論的學習模式。引導讀者漸進式地學習Go語言的相關知識,並對其中的相關內容產生濃厚的興趣。 本書共19章,從第1章編程語言的前世今生開始,系統性講解編程語言的時間線及Go語言的誕生歷史。第2章環境搭建詳細講解了不同的操作系統搭建Go語言開發環境的過程。第3~19章是Go語言最為核心的內容部分,內容按照從實踐到原理循序漸進的過程設計。本書示例代碼豐富,實際性和系統性較強,並配有視頻講解,助力讀者透徹理解書中的重點、難點。 本書既適合初學者入門,精心設計的案例對於工作多年的開發者也有參考價值,並可作為高等院校和培訓機構相關專業的教學參考書。"
目錄大綱
目錄
第1章編程的前世今生
1.1編程語言發展史
1.2編程語言時間軸
1.3Go語言發展史
1.3.1Go語言是如何誕生的
1.3.2Go語言的早期團隊和演進歷程
1.3.3Go語言正式發布並開源
1.4Go語言特點
1.4.1編譯型語言和解釋型語言
1.4.2Go語言為並發而生
1.4.3Go語言設計理念
1.4.4使用Go語言的項目
1.5學好Go語言的建議
第2章環境搭建(8min)
2.1在Windows系統下搭建Go開發環境
2.1.1SDK簡介
2.1.2下載SDK工具包
2.1.3配置Go環境變量
2.1.4檢查Go語言環境是否安裝成功
2.2Linux系統下搭建Go語言開發環境
2.2.1Linux系統下安裝SDK
2.2.2配置Go環境變量
2.3macOS系統下搭建Go語言開發環境
2.4Go語言的開發工具介紹
2.4.1工具介紹
2.4.2工具選擇
2.4.3VS Code的安裝和使用
2.4.4GoLand的安裝和使用
2.5運行第1個程序
2.5.1Go代碼結構介紹
2.5.2GoLand中運行Go文件
2.5.3命令行運行Go文件
第3章變量與基本數據類型(46min)
3.1什麽是變量
3.2變量的聲明、初始化和賦值
3.3常量
3.4局部變量和全局變量
3.5變量可見性
3.6註釋
3.6.1註釋的格式
3.6.2包註釋
3.6.3命令註釋
3.6.4變量註釋
3.7規範的代碼風格
3.8數據類型的基本介紹
3.8.1數字類型
3.8.2浮點數類型
3.8.3字符串類型
3.8.4布爾類型
3.8.5字符類型
3.9擴展——字符編碼
3.9.1ASCII第1個編碼集合的誕生及發展
3.9.2GBK編碼的誕生及發展
3.9.3Unicode編碼的誕生
3.9.4UTF系列編碼的誕生及發展
3.9.5擴展——亂碼之王錕斤拷
3.10基本數據類型的默認值
3.11類型轉換
3.11.1顯式類型轉換
3.11.2隱式類型轉換
3.11.3strconv包
3.12輸入函數
3.12.1Scanf函數
3.12.2Scanln函數
3.12.3Scan函數
第4章運算符(3min)
4.1運算符基本介紹
4.2賦值運算符
4.3算術運算符
4.4關系運算符
4.5邏輯運算符
4.6位運算符
4.6.1按位與
4.6.2按位或
4.6.3按位異或
4.6.4按位左移
4.6.5按位右移
4.7運算符的優先級
第5章流程控制(26min)
5.1條件判斷
5.1.1if單分支
5.1.2ifelse雙分支
5.1.3ifelseif多分支
5.1.4if嵌套
5.1.5知識擴展——衛語句
5.2switch語句
5.3循環語句
5.3.1標準for循環
5.3.2while模式的for循環
5.3.3dowhile模式的for循環
5.3.4for range模式的for循環
5.3.5break語句
5.3.6continue語句
5.3.7多重循環
第6章數組、切片、Map(27min)
6.1數組
6.1.1聲明數組
6.1.2初始化數組
6.1.3數組索引
6.1.4修改數組元素
6.1.5遍歷數組
6.2切片
6.2.1什麽是切片
6.2.2切片的創建和初始化
6.2.3nil和空切片
6.2.4為切片中的元素賦值
6.2.5通過切片創建新的切片
6.2.6遍歷切片
6.2.7append()函數
6.2.8切片的底層原理
6.3map
6.3.1map的聲明與初始化
6.3.2map的增、刪、改、查
6.3.3map的底層實現
第7章函數與指針(50min)
7.1函數
7.1.1函數定義
7.1.2函數參數
7.1.3函數返回值
7.1.4匿名函數
7.1.5函數可作為參數
7.1.6函數可作為返回值
7.1.7函數作為變量
7.2特殊的函數
7.2.1main()函數
7.2.2init()函數
7.2.3defer()函數
7.2.4遞歸函數
7.3指針
7.3.1指針地址和指針類型
7.3.2指針取值
7.3.3空指針
7.3.4new
7.3.5make
第8章結構體與自定義數據類型(29min)
8.1結構體
8.1.1結構體定義
8.1.2結構體實例化
8.1.3結構體方法
8.1.4結構體匿名字段
8.1.5嵌套結構體
8.1.6結構體的“繼承”
8.1.7結構體標簽
8.1.8結構體內存佈局
8.2自定義數據類型與類型別名
8.2.1自定義類型
8.2.2自定義類型方法
8.2.3類型別名
8.2.4自定義類型和類型別名的區別
第9章接口(16min)
9.1Go接口interface
9.1.1接口的定義
9.1.2接口的實現
9.1.3接口的使用
9.1.4接口嵌套
9.1.5類型斷言
9.2空接口
第10章協程與Channel(27min)
10.1何為協程
10.1.1WaitGroup
10.1.2WaitGroup原理探析
10.2Channel通道
10.2.1Channel類型
10.2.2創建Channel
10.2.3操作Channel
10.2.4無緩沖的Channel
10.2.5有緩沖的Channel
10.2.6從Channel中循環取值
10.3select
10.3.1select特點
10.3.2帶default的語句
10.3.3不帶default的語句
10.3.4關閉Channel監聽
10.3.5空的select將一直阻塞
10.3.6select定時器
10.4協程的設計與原理
10.4.1單進程時代
10.4.2多進程時代
10.4.3多線程時代
10.4.4協程時代
10.4.5協程的調度
10.4.6Go語言協程調度
第11章線程安全與異常處理(25min)
11.1線程為什麽不安全
11.2如何解決線程安全問題
11.2.1互斥鎖
11.2.2讀寫鎖
11.2.3一次性鎖
11.2.4sync.Pool
11.3線程安全sync.Map
11.3.1sync.Map基本用法
11.3.2sync.Map為什麽快
11.4異常處理
11.4.1自定義錯誤
11.4.2錯誤的處理方式
第12章泛型(7min)
12.1泛型函數
12.1.1泛型約束
12.1.2指定底層類型
12.1.3可比較類型
12.1.4多參數泛型
12.1.5泛型嵌套
12.1.6常用泛型函數
12.2泛型結構體
12.3泛型切片
12.4泛型map
12.5泛型Channel
第13章文件操作(53min)
13.1相對路徑與絕對路徑
13.2文件讀取
13.2.1一次性讀取
13.2.2分片讀取
13.2.3按行讀取
13.3文件寫入
13.3.1一次性寫入
13.3.2逐行寫入
13.3.3使用緩沖寫入
13.3.4os.OpenFile()函數
13.4目錄操作
13.4.1創建目錄
13.4.2讀取目錄
13.4.3遍歷目錄
13.4.4目錄的其他操作
13.5JSON文件操作
13.5.1JSON序列化
13.5.2JSON反序列化
13.6I/O接口
13.6.1io.Reader接口
13.6.2io.Writer接口
13.6.3io.Closer接口
13.6.4統一的抽象層
13.6.5最小接口原則
13.7命令行參數
13.7.1什麽是命令行參數
13.7.2使用os.Args獲取命令行參數
13.7.3使用flag包解析命令行參數
第14章單元測試與包管理
14.1最簡單的測試
14.2單元測試的基本規範
14.3單元測試的常用方法
14.3.1表驅動測試
14.3.2隨機執行
14.3.3子測試
14.3.4TestMain()函數
14.4基準測試
14.5包管理
14.5.1Go包的概念
14.5.2包的導入與可見性
14.5.3Go依賴管理的概念
14.5.4go mod的使用
第15章反射(13min)
15.1反射的優點與缺點
15.2reflect包
15.2.1type Type 類型
15.2.2type Kind類型
15.2.3TypeOf常用方法
15.2.4ValueOf常用方法
第16章網絡編程(8min)
16.1HTTP編程
16.1.1HTTP服務器端
16.1.2HTTP客戶端
16.2HTTP協議
16.2.1HTTP協議的發展歷程
16.2.2HTTP協議會話方式
16.2.3請求報文
16.2.4響應報文
16.3TCP編程
16.3.1標準收發模式
16.3.2聊天收發模式
16.4TCP協議
16.4.1OSI七層模型
16.4.2TCP報文
16.4.3三次握手
16.4.4四次揮手
16.5UDP編程
16.5.1UDP優勢
16.5.2UDP服務器端
16.5.3UDP客戶端
16.5.4UDP應用場景
第17章部署(13min)
17.1打包命令
17.2交叉編譯
17.3文件嵌入
17.3.1嵌入單個文件
17.3.2嵌入多個文件
17.3.3嵌入目錄
第18章正則表達式
18.1正則表達式概述
18.2正則表達式基本語法
18.2.1字符集合
18.2.2字符範圍
18.2.3數量字符
18.2.4元字符
18.2.5特殊字符
18.2.6位置匹配
18.2.7分組
18.2.8修飾符
18.3Go語言中使用正則表達式
18.3.1字符串匹配
18.3.2分組匹配
18.3.3分組替換
18.3.4標志
18.4常用正則表達式
第19章標準庫和常用第三方庫(43min)
19.1Go標準庫
19.1.1時間和日期
19.1.2數學
19.1.3日誌
19.1.4上下文
19.2Go常用第三方庫
19.2.1logrus日誌庫
19.2.2gin
19.2.3定時任務