1 01.语法基础 [12] 1.1 01.快速开始 [4] 1.1.1 99.参考资料 [1] 1.1.1.1 How to start a Go project in 2023 1.1.2 Web 应用 1.1.3 命令行应用 [2] 1.1.3.1 Cobra 1.1.3.2 urfave cli 1.1.4 开发环境 [3] 1.1.4.1 Delve 1.1.4.2 内置命令 1.1.4.3 工具链 1.2 02.背景与特性 [1] 1.2.1 Go 简史 1.3 IO 1.4 元编程 [1] 1.4.1 反射 1.5 函数 [3] 1.5.1 函数定义 1.5.2 函数执行 1.5.3 闭包 1.6 包与模块 [2] 1.6.1 Go Modules 1.6.2 包 1.7 变量操作 [4] 1.7.1 内存分配 1.7.2 变量 1.7.3 常量 1.7.4 指针 [1] 1.7.4.1 Go 中指针与引用探讨 1.8 序列化 [3] 1.8.1 Json 1.8.2 Xml 1.8.3 gRPC 1.9 异常处理 [5] 1.9.1 Error 1.9.2 errgroup 1.9.3 panic 原理 1.9.4 panic 1.9.5 错误类型 1.10 接口 [1] 1.10.1 内嵌 1.11 流程控制 [2] 1.11.1 循环 1.11.2 条件选择 1.12 结构体 [3] 1.12.1 定义 1.12.2 对象 1.12.3 方法 2 02.数据类型与结构 [3] 2.1 序列类型 [3] 2.1.1 切片 2.1.2 序列类型 2.1.3 数组 2.2 映射 [1] 2.2.1 定义与操作 2.3 类型系统 [5] 2.3.1 基础类型 2.3.2 字符串 [4] 2.3.2.1 Template 2.3.2.2 strings 2.3.2.3 字符串 2.3.2.4 正则匹配 2.3.3 时间与日期 2.3.4 枚举 2.3.5 泛型 3 03.并发编程 [8] 3.1 01.Goroutine [5] 3.1.1 99.参考资料 [1] 3.1.1.1 Goroutines: the concurrency model we wanted all along 3.1.2 内存模型 3.1.3 并行计算 3.1.4 性能评测 3.1.5 调度模型 3.2 sync [2] 3.2.1 Mutex 3.2.2 WaitGroup 3.3 协程协作 [2] 3.3.1 线程等待与退出 3.3.2 错误传递 3.4 协程通信 [3] 3.4.1 Channel 3.4.2 context 3.4.3 select 3.5 并发容器 [2] 3.5.1 Sync.Map 3.5.2 原子操作 3.6 并发模型 [2] 3.6.1 发布订阅模型 3.6.2 生产者与消费者 3.7 异步模式 3.8 线程池 [2] 3.8.1 自定义线程池 3.8.2 超时与取消 4 04.网络与 Web 开发 [4] 4.1 Gin 4.2 HTTP 处理 [3] 4.2.1 TCP 服务器 4.2.2 简单 Web 服务 4.2.3 请求处理 4.3 RPC [1] 4.3.1 Netpoll [1] 4.3.1.1 快速使用 4.4 gRPC 5 05.工程实践 [11] 5.1 Cgo 5.2 ORM [1] 5.2.1 ent 5.3 交付与部署 [1] 5.3.1 发布与部署 5.4 内存管理 [1] 5.4.1 内存占用 5.5 垃圾回收 5.6 数据库 [3] 5.6.1 ElasticSearch 5.6.2 MySQL 5.6.3 连接池 5.7 文件系统 5.8 汇编 5.9 程序编译 [1] 5.9.1 逃逸分析 5.10 编码规约 [2] 5.10.1 代码组织 5.10.2 样式规范 5.11 运行时 6 06.设计模式 7 07.实践案例 8 INTRODUCTION