from clipboard
目录Go 语言圣经(中文版)................................................................................................................... 10版本信息............................................................................................................................... 10译者序 ...................................................................................................................................................... 11前言........................................................................................................................................................... 13Go 语言起源................................................................................................................................. 13Go 语言项目................................................................................................................................. 15本书的组织 ................................................................................................................................... 16更多的信息 ................................................................................................................................... 17致谢.................................................................................................................................................. 18第一章 入门............................................................................................................................................ 191.1. Hello, World ......................................................................................................................... 191.2. 命令行参数........................................................................................................................... 211.3. 查找重复的行 ...................................................................................................................... 251.4. GIF 动画................................................................................................................................. 301.5. 获取 URL................................................................................................................................ 331.6. 并发获取多个 URL............................................................................................................. 341.7. Web 服务............................................................................................................................... 361.8. 本章要点................................................................................................................................ 40第二章 程序结构 .................................................................................................................................. 432.1. 命名 ......................................................................................................................................... 432.2. 声明 ......................................................................................................................................... 442.3. 变量 ......................................................................................................................................... 452.3.1. 简短变量声明......................................................................................................... 462.3.2. 指针............................................................................................................................ 474 / 3702.3.3. new 函数.................................................................................................................. 502.3.4. 变量的生命周期 .................................................................................................... 512.4. 赋值 ......................................................................................................................................... 522.4.1. 元组赋值................................................................................................................... 522.4.2. 可赋值性................................................................................................................... 542.5. 类型 ......................................................................................................................................... 542.6. 包和文件................................................................................................................................ 572.6.1. 导入包 ....................................................................................................................... 582.6.2. 包的初始化.............................................................................................................. 602.7. 作用域..................................................................................................................................... 61第三章 基础数据类型......................................................................................................................... 663.1. 整型 ......................................................................................................................................... 663.2. 浮点数..................................................................................................................................... 713.3. 复数 ......................................................................................................................................... 753.4. 布尔型..................................................................................................................................... 783.5. 字符串..................................................................................................................................... 793.5.1. 字符串面值.............................................................................................................. 803.5.2. Unicode ..................................................................................................................... 813.5.3. UTF-8......................................................................................................................... 823.5.4. 字符串和 Byte 切片............................................................................................. 853.5.5. 字符串和数字的转换........................................................................................... 883.6. 常量 ......................................................................................................................................... 893.6.1. iota 常量生成器..................................................................................................... 903.6.2. 无类型常量.............................................................................................................. 92第四章 复合数据类型......................................................................................................................... 954.1. 数组 ......................................................................................................................................... 955 / 3704.2. Slice.......................................................................................................................................... 984.2.1. append 函数..........................................................................................................1024.2.2. Slice 内存技巧......................................................................................................1054.3. Map........................................................................................................................................1074.4. 结构体...................................................................................................................................1134.4.1. 结构体面值............................................................................................................1164.4.2. 结构体比较............................................................................................................1174.4.3. 结构体嵌入和匿名成员....................................................................................1184.5. JSON.......................................................................................................................................1204.6. 文本和 HTML 模板..........................................................................................................126第五章 函数..........................................................................................................................................1335.1. 函数声明..............................................................................................................................1335.2. 递归 .......................................................................................................................................1345.3. 多返回值..............................................................................................................................1385.4. 错误 .......................................................................................................................................1405.4.1. 错误处理策略.......................................................................................................1415.4.2. 文件结尾错误(EOF).....................................................................................1445.5. 函数值...................................................................................................................................1455.6. 匿名函数..............................................................................................................................1475.6.1. 警告:捕获迭代变量.........................................................................................1535.7. 可变参数..............................................................................................................................1545.8. Deferred 函数....................................................................................................................1555.9. Panic 异常...........................................................................................................................1605.10. Recover 捕获异常.........................................................................................................162第六章 方法..........................................................................................................................................1656.1. 方法声明..............................................................................................................................1656 / 3706.2. 基于指针对象的方法......................................................................................................1676.2.1. Nil 也是一个合法的接收器类型 ...................................................................1696.3. 通过嵌入结构体来扩展类型........................................................................................1716.4. 方法值和方法表达式......................................................................................................1746.5. 示例: Bit 数组....................................................................................................................1756.6. 封装 .......................................................................................................................................178第七章 接口..........................................................................................................................................1817.1. 接口约定..............................................................................................................................1817.2. 接口类型..............................................................................................................................1837.3. 实现接口的条件................................................................................................................1857.4. flag.Value 接口..................................................................................................................1887.5. 接口值...................................................................................................................................1907.5.1. 警告:一个包含 nil 指针的接口不是 nil 接口........................................1937.6. sort.Interface 接口 ..........................................................................................................1957.7. http.Handler 接口............................................................................................................1997.8. error 接口...........................................................................................................................2047.9. 示例: 表达式求值.............................................................................................................2067.10. 类型断言...........................................................................................................................2147.11. 基于类型断言区别错误类型.....................................................................................2157.12. 通过类型断言询问行为...............................................................................................2177.13. 类型开关...........................................................................................................................2197.14. 示例: 基于标记的 XML 解码.....................................................................................2217.15. 一些建议...........................................................................................................................224第八章 Goroutines 和 Channels...................................................................................................2258.1. Goroutines ..........................................................................................................................2258.2. 示例: 并发的 Clock 服务................................................................................................2267 / 3708.3. 示例: 并发的 Echo 服务.................................................................................................2308.4. Channels ..............................................................................................................................2328.4.1. 不带缓存的 Channels ........................................................................................2338.4.2. 串联的 Channels(Pipeline)........................................................................2358.4.3. 单方向的 Channel...............................................................................................2378.4.4. 带缓存的 Channels.............................................................................................2388.5. 并发的循环.........................................................................................................................2418.6. 示例: 并发的 Web 爬虫.................................................................................................2468.7. 基于 select 的多路复用.................................................................................................2508.8. 示例: 并发的字典遍历....................................................................................................2538.9. 并发的退出.........................................................................................................................2578.10. 示例: 聊天服务 ...............................................................................................................260第九章 基于共享变量的并发.........................................................................................................2639.1. 竞争条件..............................................................................................................................2639.2. sync.Mutex 互斥锁..........................................................................................................2679.3. sync.RWMutex 读写锁...................................................................................................2719.4. 内存同步..............................................................................................................................2729.5. sync.Once 初始化.............................................................................................................2739.6. 竞争条件检测 ....................................................................................................................2759.7. 示例: 并发的非阻塞缓存...............................................................................................2769.8. Goroutines 和线程...........................................................................................................2849.8.1. 动态栈 .....................................................................................................................2849.8.2. Goroutine 调度....................................................................................................2849.8.3. GOMAXPROCS ......................................................................................................2859.8.4. Goroutine 没有 ID 号........................................................................................286第十章 包和工具 ................................................................................................................................2878 / 37010.1. 包简介................................................................................................................................28710.2. 导入路径...........................................................................................................................28810.3. 包声明................................................................................................................................28810.4. 导入声明...........................................................................................................................28910.5. 包的匿名导入..................................................................................................................29010.6. 包和命名...........................................................................................................................29210.7. 工具.....................................................................................................................................29310.7.1. 工作区结构 .........................................................................................................29410.7.2. 下载包...................................................................................................................29510.7.3. 构建包...................................................................................................................29610.7.4. 包文档...................................................................................................................29810.7.5. 内部包...................................................................................................................30010.7.6. 查询包...................................................................................................................301第十一章 测试.....................................................................................................................................30511.1. go test.................................................................................................................................30511.2. 测试函数...........................................................................................................................30611.2.1. 随机测试..............................................................................................................31011.2.2. 测试一个命令.....................................................................................................31111.2.3. 白盒测试..............................................................................................................31311.2.4. 扩展测试包 .........................................................................................................31611.2.5. 编写有效的测试................................................................................................31811.2.6. 避免的不稳定的测试......................................................................................32011.3. 测试覆盖率 ......................................................................................................................32011.4. 基准测试...........................................................................................................................32311.5. 剖析.....................................................................................................................................32511.6. 示例函数...........................................................................................................................3279 / 370第十二章 反射.....................................................................................................................................33012.1. 为何需要反射?................................................................................................................33012.2. reflect.Type 和 reflect.Value .....................................................................................33112.3. Display 递归打印...........................................................................................................33312.4. 示例: 编码 S 表达式......................................................................................................33812.5. 通过 reflect.Value 修改值 ..........................................................................................34112.6. 示例: 解码 S 表达式......................................................................................................34312.7. 获取结构体字段标识 ...................................................................................................34712.8. 显示一个类型的方法集...............................................................................................35012.9. 几点忠告...........................................................................................................................351第 13 章 底层编程.............................................................................................................................35313.1. unsafe.Sizeof, Alignof 和 Offsetof ............................................................................35413.2. unsafe.Pointer.................................................................................................................35613.3. 示例: 深度相等判断......................................................................................................35713.4. 通过 cgo 调用 C 代码...................................................................................................36013.5. 几点忠告...........................................................................................................................365附录.........................................................................................................................................................367附录 A:原文勘误....................................................................................................................367附录 B:作者/译者 .................................................................................................................369英文作者.............................................................................................................................369中文译者.............................................................................................................................369附录 C:译文授权....................................................................................................................369附录 D:其它语言....................................................................................................................369