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