目录
第1章 常见数据结构的实现原理
1.1 管道
1.1.1 热身测验
1.1.2 特性速览
1.1.3 实现原理
1.2 slice
1.2.1 热身测验
1.2.2 特性速览
1.2.3 实现原理
1.2.4 切片表达式
1.3 map
1.3.1 热身测验
1.3.2 特性速览
1.3.3 实现原理
1.4 struct
1.4.1 热身测验
1.4.2 内嵌字段
1.4.3 方法受体
1.4.4 字段标签
1.5 iota
1.5.1 热身测验
1.5.2 特性速览
1.5.3 实现原理
1.6 string
1.6.1 热身测验
1.6.2 特性速览
1.6.3 实现原理
第2章 控制结构
2.1 select
2.1.1 热身测验
2.1.2 特性速览
2.1.3 实现原理
2.2 for-range
2.2.1 热身测验
2.2.2 特性速览
2.2.3 实现原理
第3章 协程
3.1 协程的概念
3.2 调度模型
3.3 调度策略
第4章 内存管理
4.1 内存分配
4.2 垃圾回收
4.3 逃逸分析
第5章 并发控制
5.1 channel
5.2 WaitGroup
5.3 context
5.4 Mutex
5.5 RWMutex
5.5.1 读写锁的数据结构
5.5.2 场景分析
第6章 反射
6.1 热身测验
6.2 接口
6.3 反射定律
第7章 测试
7.1 快速开始
7.1.1 单元测试
7.1.2 基准测试
7.1.3 示例测试
7.2 进阶测试
7.2.1 子测试
7.2.2 Main测试
7.3 实现原理
7.3.1 testing.common
7.3.2 testing.TB接口
7.3.3 单元测试的实现原理
7.3.4 性能测试的实现原理
7.3.5 示例测试的实现原理
7.3.6 Main测试的实现原理
7.3.7 go test的工作机制
7.4 扩展阅读
7.4.1 测试参数
7.4.2 benchstat
第8章 异常处理
8.1 error
8.1.1 热身测验
8.1.2 基础error
8.1.3 链式error
8.1.4 工程迁移
8.2 defer
8.2.1 热身测验
8.2.2 约法三章
8.2.3 实现原理
8.2.4 性能优化
8.3 panic
8.3.1 热身测验
8.3.2 工作机制
8.3.3 源码剖析
8.4 recover
8.4.1 热身测验
8.4.2 工作机制
8.4.3 源码剖析
第9章 定时器
9.1 一次性定时器(Timer)
9.1.1 快速开始
9.1.2 实现原理
9.2 周期性定时器(Ticker)
9.2.1 快速开始
9.2.2 实现原理
9.3 runtimeTimer
9.3.1 实现原理
9.3.2 性能优化
9.4 案例分享
第10章 语法糖
10.1 简短变量声明符
10.1.1 热身测验
10.1.2 规则
10.2 可变参函数
第11章 版本管理
11.1 安装Go
11.2 删除Go
11.3 升级Go
11.4 Go版本管理器
11.4.1 快速开始
11.4.2 工作机制
11.4.3 小结
11.5 源码编译
11.5.1 源码下载
11.5.2 源码编译过程
第12章 Go语言依赖管理
12.1 GOPATH
12.1.1 GOROOT是什么
12.1.2 GOPATH是什么
12.1.3 依赖查找
12.1.4 GOPATH的缺点
12.2 vendor
12.2.1 vendor目录位置
12.2.2 搜索顺序
12.2.3 vendor的不足
12.3 Go Module
12.3.1 Go Module基础
12.3.2 快速实践
12.3.3 replace指令
12.3.4 exclude指令
12.3.5 indirect指令
12.3.6 版本选择机制
12.3.7 incompatible
12.3.8 伪版本
12.3.9 依赖包存储
12.3.10 go.sum
12.3.11 模块代理
12.3.12 GOSUMDB的工作机制
12.3.13 GOSUMDB的实现原理
12.3.14 第三方代理
12.3.15 私有模块
12.3.16 Go Module的演进
第13章 编程陷阱
13.1 切片扩容
13.2 空切片
13.3 append的本质
13.4 循环变量引用
13.5 协程引用循环变量
13.6 recover失效
展开