第一部分 Go語言的世界
第1章 初識Go語言
1.1Go語言特性一瞥
1.2Go語言的優(yōu)劣
1.3怎樣學習Go語言
1.4本章小結
第2章 Go語言環(huán)境搭建
2.1安裝和設置
2.1.1Linux
2.1.2Windows
2.2工程結構
2.2.1工作區(qū)
2.2.2GOPATH
2.2.3源碼文件
2.2.4代碼包
2.3標準命令概述
2.4本章小結
第二部分 編程基礎
第3章 詞法與數據類型
3.1基本詞法
3.1.1標識符
3.1.2關鍵字
3.1.3字面量
3.1.4類型
3.1.5操作符
3.1.6表達式
3.2數據類型
3.2.1基本數據類型
3.2.2數組
3.2.3切片
3.2.4字典
3.2.5函數和方法
3.2.6接口
3.2.7結構體
3.2.8指針
3.2.9數據初始化
3.3數據的使用
3.3.1賦值語句
3.3.2常量與變量
3.3.3可比性與有序性
3.3.4類型轉換
3.3.5內建函數
3.4本章小結
第4章 流程控制方法
4.1基本流程控制
4.1.1代碼塊和作用域
4.1.2if語句
4.1.3switch語句
4.1.4for語句
4.1.5goto語句
4.2defer語句
4.3異常處理
4.3.1error
4.3.2panic和recover
4.4實戰(zhàn)演練--Set
4.5實戰(zhàn)演練--OrderedMap
4.6本章小結
第5章 程序測試和文檔
5.1程序測試
5.1.1功能測試
5.1.2基準測試
5.1.3樣本測試
5.1.4測試運行記錄
5.1.5測試覆蓋率
5.2程序文檔
5.3本章小結
第三部分 并發(fā)編程
第6章 并發(fā)編程綜述
6.1并發(fā)編程基礎
6.1.1串行程序與并發(fā)程序
6.1.2并發(fā)程序與并行程序
6.1.3并發(fā)程序與并發(fā)系統(tǒng)
6.1.4并發(fā)程序的不確定性
6.1.5并發(fā)程序內部的交互
6.2多進程編程
6.2.1進程
6.2.2關于同步
6.2.3管道
6.2.4信號
6.2.5Socket
6.3多線程編程
6.3.1線程
6.3.2線程的同步
6.4多線程與多進程
6.5多核時代的并發(fā)編程
6.6Go語言的并發(fā)編程
6.6.1線程實現(xiàn)模型
6.6.2調度器
6.6.3更多的細節(jié)
6.7本章小結
第7章 Goroutine和Channel
7.1Goroutine的使用
7.1.1go語句與Goroutine
7.1.2Goroutine的運作過程
7.1.3runtime包與Goroutine
7.1.4HappensBefore
7.2Channel
7.2.1Channel是什么
7.2.2單向Channel
7.2.3for語句與Channel
7.2.4select語句
7.2.5非緩沖的Channel
7.2.6time包與Channel
7.3實戰(zhàn)演練--載荷發(fā)生器
7.3.1參數和結果
7.3.2基本結構
7.3.3初始化
7.3.4啟動和停止
7.3.5調用器和功能測試
7.4本章小結
第8章 同步
8.1鎖的使用
8.2條件變量
8.3原子操作
8.4只會執(zhí)行一次
8.5WaitGroup
8.6臨時對象池
8.7實戰(zhàn)演練--ConcurrentMap
8.8本章小結
第四部分 編程實戰(zhàn)
第9章 一個網絡爬蟲框架的設計和實現(xiàn)
9.1網絡爬蟲與框架
9.2功能需求和分析
9.3總體設計
9.4詳細設計
9.4.1基本數據結構
9.4.2接口的設計
9.5中間件的實現(xiàn)
9.5.1通道管理器
9.5.2實體池
9.5.3停止信號
9.5.4ID生成器
9.6處理模塊的實現(xiàn)
9.6.1網頁下載器
9.6.2分析器
9.6.3條目處理管道
9.7調度器的實現(xiàn)
9.7.1基本結構
9.7.2主要的函數和方法
9.7.3請求緩存
9.7.4摘要信息的類型
9.8一個使用演示
9.8.1再看調度器參數
9.8.2開啟調度器
9.8.3調度器監(jiān)控函數
9.9當前的不足和解決思路
9.10本章小結
附錄Go語言的學習資源