# Summary

* [前言](preface.md)
  * [Go语言起源](ch0/ch0-01.md)
  * [Go语言项目](ch0/ch0-02.md)
  * [本书的组织](ch0/ch0-03.md)
  * [更多的信息](ch0/ch0-04.md)
  * [致谢](ch0/ch0-05.md)
* [入门](ch1/ch1.md)
  * [Hello, World](ch1/ch1-01.md)
  * [命令行参数](ch1/ch1-02.md)
  * [查找重复的行](ch1/ch1-03.md)
  * [GIF动画](ch1/ch1-04.md)
  * [获取URL](ch1/ch1-05.md)
  * [并发获取多个URL](ch1/ch1-06.md)
  * [Web服务](ch1/ch1-07.md)
  * [本章要点](ch1/ch1-08.md)
* [程序结构](ch2/ch2.md)
  * [命名](ch2/ch2-01.md)
  * [声明](ch2/ch2-02.md)
  * [变量](ch2/ch2-03.md)
  * [赋值](ch2/ch2-04.md)
  * [类型](ch2/ch2-05.md)
  * [包和文件](ch2/ch2-06.md)
  * [作用域](ch2/ch2-07.md)
* [基础数据类型](ch3/ch3.md)
  * [整型](ch3/ch3-01.md)
  * [浮点数](ch3/ch3-02.md)
  * [复数](ch3/ch3-03.md)
  * [布尔型](ch3/ch3-04.md)
  * [字符串](ch3/ch3-05.md)
  * [常量](ch3/ch3-06.md)
* [复合数据类型](ch4/ch4.md)
  * [数组](ch4/ch4-01.md)
  * [Slice](ch4/ch4-02.md)
  * [Map](ch4/ch4-03.md)
  * [结构体](ch4/ch4-04.md)
  * [JSON](ch4/ch4-05.md)
  * [文本和HTML模板](ch4/ch4-06.md)
* [函数](ch5/ch5.md)
  * [函数声明](ch5/ch5-01.md)
  * [递归](ch5/ch5-02.md)
  * [多返回值](ch5/ch5-03.md)
  * [错误](ch5/ch5-04.md)
  * [函数值](ch5/ch5-05.md)
  * [匿名函数](ch5/ch5-06.md)
  * [可变参数](ch5/ch5-07.md)
  * [Deferred函数](ch5/ch5-08.md)
  * [Panic异常](ch5/ch5-09.md)
  * [Recover捕获异常](ch5/ch5-10.md)
* [方法](ch6/ch6.md)
  * [方法声明](ch6/ch6-01.md)
  * [基于指针对象的方法](ch6/ch6-02.md)
  * [通过嵌入结构体来扩展类型](ch6/ch6-03.md)
  * [方法值和方法表达式](ch6/ch6-04.md)
  * [示例: Bit数组](ch6/ch6-05.md)
  * [封装](ch6/ch6-06.md)
* [接口](ch7/ch7.md)
  * [接口是合约](ch7/ch7-01.md)
  * [接口类型](ch7/ch7-02.md)
  * [实现接口的条件](ch7/ch7-03.md)
  * [flag.Value接口](ch7/ch7-04.md)
  * [接口值](ch7/ch7-05.md)
  * [sort.Interface接口](ch7/ch7-06.md)
  * [http.Handler接口](ch7/ch7-07.md)
  * [error接口](ch7/ch7-08.md)
  * [示例: 表达式求值](ch7/ch7-09.md)
  * [类型断言](ch7/ch7-10.md)
  * [基于类型断言识别错误类型](ch7/ch7-11.md)
  * [通过类型断言查询接口](ch7/ch7-12.md)
  * [类型分支](ch7/ch7-13.md)
  * [示例: 基于标记的XML解码](ch7/ch7-14.md)
  * [补充几点](ch7/ch7-15.md)
* [Goroutines和Channels](ch8/ch8.md)
  * [Goroutines](ch8/ch8-01.md)
  * [示例: 并发的Clock服务](ch8/ch8-02.md)
  * [示例: 并发的Echo服务](ch8/ch8-03.md)
  * [Channels](ch8/ch8-04.md)
  * [并发的循环](ch8/ch8-05.md)
  * [示例: 并发的Web爬虫](ch8/ch8-06.md)
  * [基于select的多路复用](ch8/ch8-07.md)
  * [示例: 并发的字典遍历](ch8/ch8-08.md)
  * [并发的退出](ch8/ch8-09.md)
  * [示例: 聊天服务](ch8/ch8-10.md)
* [基于共享变量的并发](ch9/ch9.md)
  * [竞争条件](ch9/ch9-01.md)
  * [sync.Mutex互斥锁](ch9/ch9-02.md)
  * [sync.RWMutex读写锁](ch9/ch9-03.md)
  * [内存同步](ch9/ch9-04.md)
  * [sync.Once初始化](ch9/ch9-05.md)
  * [竞争条件检测](ch9/ch9-06.md)
  * [示例: 并发的非阻塞缓存](ch9/ch9-07.md)
  * [Goroutines和线程](ch9/ch9-08.md)
* [包和工具](ch10/ch10.md)
  * [包简介](ch10/ch10-01.md)
  * [导入路径](ch10/ch10-02.md)
  * [包声明](ch10/ch10-03.md)
  * [导入声明](ch10/ch10-04.md)
  * [包的匿名导入](ch10/ch10-05.md)
  * [包和命名](ch10/ch10-06.md)
  * [工具](ch10/ch10-07.md)
* [测试](ch11/ch11.md)
  * [go test](ch11/ch11-01.md)
  * [测试函数](ch11/ch11-02.md)
  * [测试覆盖率](ch11/ch11-03.md)
  * [基准测试](ch11/ch11-04.md)
  * [剖析](ch11/ch11-05.md)
  * [示例函数](ch11/ch11-06.md)
* [反射](ch12/ch12.md)
  * [为何需要反射?](ch12/ch12-01.md)
  * [reflect.Type和reflect.Value](ch12/ch12-02.md)
  * [Display递归打印](ch12/ch12-03.md)
  * [示例: 编码S表达式](ch12/ch12-04.md)
  * [通过reflect.Value修改值](ch12/ch12-05.md)
  * [示例: 解码S表达式](ch12/ch12-06.md)
  * [获取结构体字段标识](ch12/ch12-07.md)
  * [显示一个类型的方法集](ch12/ch12-08.md)
  * [几点忠告](ch12/ch12-09.md)
* [底层编程](ch13/ch13.md)
  * [unsafe.Sizeof, Alignof 和 Offsetof](ch13/ch13-01.md)
  * [unsafe.Pointer](ch13/ch13-02.md)
  * [示例: 深度相等判断](ch13/ch13-03.md)
  * [通过cgo调用C代码](ch13/ch13-04.md)
  * [几点忠告](ch13/ch13-05.md)
* [附录](appendix/appendix.md)
  * [附录A：原文勘误](appendix/appendix-a-errata.md)
  * [附录B：作者译者](appendix/appendix-b-author.md)
  * [附录C：译文授权](appendix/appendix-c-cpoyright.md)
  * [附录D：其它语言](appendix/appendix-d-translations.md)
