第一部分 Go语言的世界
第1章 初识Go语言
1.1Go语言特性一瞥
1.2Go语言的优劣
1.3怎样学习Go语言
1.4本章小结
第2章 Go语言环境搭建
2.1安装和设置
2.1.1Linux
2.1.2Windows
2.2工程结构
2.2.1工作区
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实战演练--Set
4.5实战演练--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本章小结
第三部分 并发编程
第6章 并发编程综述
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.3管道
6.2.4信号
6.2.5Socket
6.3多线程编程
6.3.1线程
6.3.2线程的同步
6.4多线程与多进程
6.5多核时代的并发编程
6.6Go语言的并发编程
6.6.1线程实现模型
6.6.2调度器
6.6.3更多的细节
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实战演练--载荷发生器
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只会执行一次
8.5WaitGroup
8.6临时对象池
8.7实战演练--ConcurrentMap
8.8本章小结
第四部分 编程实战
第9章 一个网络爬虫框架的设计和实现
9.1网络爬虫与框架
9.2功能需求和分析
9.3总体设计
9.4详细设计
9.4.1基本数据结构
9.4.2接口的设计
9.5中间件的实现
9.5.1通道管理器
9.5.2实体池
9.5.3停止信号
9.5.4ID生成器
9.6处理模块的实现
9.6.1网页下载器
9.6.2分析器
9.6.3条目处理管道
9.7调度器的实现
9.7.1基本结构
9.7.2主要的函数和方法
9.7.3请求缓存
9.7.4摘要信息的类型
9.8一个使用演示
9.8.1再看调度器参数
9.8.2开启调度器
9.8.3调度器监控函数
9.9当前的不足和解决思路
9.10本章小结
附录Go语言的学习资源
——许式伟,七牛云存储CEO
“Go语言是服务端编程领域非常热门的语言,市面上关于Go语言的图书并不少见,但都没有像《Go并发编程实战》这样,把Go语言精髓的部分——并发编程讲解得如此深入浅出,明白透彻。本书系统地梳理了并发编程的概念和原理,并辅以详细的Go语言程序示例,非常容易让读者对并发、线程、信号等概念有清晰的理解。不管你是刚开始接触Go语言,还是已经非常熟悉它了,如果想了解Go语言更多的技术内幕,这本书都值得仔细研读,相信读者能够从中受益匪浅。”
——郭理靖,京东云平台开放云事业部总监
“Go语言从诞生之日起就充满了争议,但是社区对它的热情却越来越高,今年InfoWorld的开源项目Docker就是用Go写的,可见Go闪烁着越来越耀眼的光芒。郝林的这本书非常注重对Go编程细节的清晰阐释,这在国内原创技术书中是不多见的。书中示例选取精心得当,深入浅出,完全没有那种看完仍需要参悟的感觉。这是一本Go学习者真正需要的图书。”
——程显峰,蓝海讯通COO