第 01 卷 · Go 语言、标准库与程序设计
本卷的定位与入口
先修:从零开始,不预设 Go 经验。按学习路线分次进入:01.01–01.03 属于 S0;01.04–01.09、01.12 的本地工具主线属于 S1。HTTP 与网络库在 S2 具备系统和网络前置后学习,01.10–01.11 在 S4 后深化,01.12 基础版不要求先会泛型和反射。
本卷 01.01–01.12 共十二章独立长篇正文已齐。先按 01.01 → 01.09 学语言和本地历史,再学 10.02 的测试,最后进入 01.12 的综合 CLI;01.10 泛型与01.11 反射在高级阶段深化。01.03 起使用 IM 主线;前两章的原案例继续作为基础补充。
| 已完成章稿 | 内容与成果 |
|---|---|
| 01.01 程序、源代码与一次运行 | 从文件、终端、包与模块起步,解释一次运行及常见错误 |
| 01.02 类型与数据表示:从积分数值到可靠输入 | 7 节讲解,逐步进入类型、数值边界、文本解析和可靠更新;含 9 道分层练习 |
| 01.03 控制流与函数:把 IM 消息规则写清楚 | 8 节讲解、12 道分层练习、12 组边界;普通函数先完成,递归与闭包第二遍深化 |
| 01.04 数组、切片与文本:组织会话消息 | 8 节讲解、14 道练习、16 组边界;区分长度、容量、共享、码点与字素簇 |
| 01.05 map、结构体与指针 | 9 节讲解、16 道练习、18 组边界;区分缺失、对象身份、参数复制与嵌套共享 |
| 01.06 方法与接口 | 8 节讲解、24 道练习;用小接口组织本地读取、写入、nil 与可替换实现 |
| 01.07 错误与资源生命周期 | 8 节讲解、20 道练习;从错误身份、包装与 defer 进入 Reader、文件关闭和 panic 边界 |
| 01.08 常用标准库协作 | 8 节讲解、12 道练习;用 JSON、时间、Scanner、大小限制、文件写入和 flag 组织本地记录 |
| 01.09 包设计与依赖演进 | 8 节讲解、20 道练习;拆开领域规则、文件适配与命令入口,审查模块和数据兼容 |
| 01.10 泛型与可复用算法 | 8 节讲解、22 道练习;从具体消息查找进入约束、类型集合、泛型容器和 Go 1.27 方法版本边界 |
| 01.11 反射与底层边界 | 8 节讲解、22 道练习;从接口动态值进入 Type/Value、可设置性、JSON 标签与 unsafe 尺寸边界 |
| 01.12 完整命令行工具 | 8 节讲解、20 道练习;组合命令合同、版本化 JSON、资源上限、错误码和个人验证任务 |
01.10–01.11 可在完成基础 CLI 后第二遍学习;初学阶段先掌握函数、数据、文件与测试。
IM 主线中的位置
消息文本、标识、字节长度、会话列表、复制与共享、错误和本地历史文件。早期先做顺序模型。
主参照与源码入口见 OpenIM 阅读地图。各章区分公开项目事实与虚构教学规则,在具备先修后对照固定源码。
参考材料怎样进入课程
采用经典资料的知识覆盖与递进思路,结合 Go 和虚构 IM 重新组织。下表对应本卷已完成的十二章;基础 CLI 先于泛型与反射的第二遍深化。
起步层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 01.01 程序与工具链 | 源文件、命令、编译与运行;包、模块与入口;编辑器与错误定位。 | 从空目录输出一条虚构聊天消息,解释源文件、模块、入口、编译与输出。 |
| 01.02 类型与数据表示 | 变量、作用域、整数范围、浮点精度、布尔表达式、常量;显式转换与解析;零值与缺失值。 | 选择消息文本、用户标识、字节长度和计数的类型,构造零值、超限与非法输入。 |
| 01.03 控制流与函数模型 | 分次讲解条件与循环、参数与返回、调用栈示意;再学递归、函数值、闭包与副作用。 | 将消息合法性与会话分流写成普通函数;追踪分支、循环、参数和返回,再解释递归与闭包。 |
原理层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 01.04 数组、切片与文本 | 先解释值复制与地址直觉,再讲 len/cap、底层数组、扩容、别名;UTF-8、字节与码点。 | 保存会话消息列表,画出切片共享与复制,解释中文与表情的字节、码点和显示边界。 |
| 01.05 map、结构体与指针 | 查找与缺失、可比较键;结构体、地址、& 与 *、nil 指针、参数复制;嵌套共享与数据身份。 | 用会话ID查找消息与成员,区分缺失、零值、对象副本和通过指针修改的影响。 |
| 01.06 方法与接口 | 从方法和接收者进入接口,再讲方法集、动态类型和值、断言、嵌入与 typed nil。 | 以切片和map存储实现小型消息查询接口;说明接收者、动态类型与nil边界。 |
工程层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 01.07 错误与资源生命周期 | 错误分类、包装、Is/As;defer 参数和顺序;panic 边界;Reader/Writer 与关闭责任。 | 解释历史读取失败与关闭责任,保留错误原因;学过context后再分析取消。 |
| 01.08 常用标准库协作 | io/bufio、os、encoding、time、flag;大小限制、流式处理与配置。HTTP 在 S2 具备网络前置后学习。 | 逐步实现历史导入导出、参数与时间处理;学过网络后再接历史查询接口。 |
| 01.09 包设计与依赖演进 | 公开 API、内部包、循环依赖;模块版本、兼容策略、文档与示例。 | 分开消息规则与I/O,设计包的公开接口,说明一次消息格式变化的兼容办法。 |
进阶层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 01.10 泛型与可复用算法 | 类型参数、约束、类型集合、comparable;泛型函数与类型;与接口的职责比较。 | 为消息索引或队列比较具体类型、泛型和接口方案,说明复用价值与复杂度。 |
| 01.11 反射与底层边界 | Type/Value、可设置性、结构标签;编码器思路;unsafe 的限制和替代方案。 | 阅读消息编解码中的反射示例,区分静态保证、运行期检查与底层操作代价。 |
| 01.12 完整命令行工具 | 输入协议、错误码、配置优先级、日志、包组织、测试、兼容和文档。 | 交付本地会话与消息记录CLI,覆盖非法记录、格式兼容、资源限制和测试。 |
本卷综合任务
从消息校验函数发展为可导入、查询和导出会话历史的 CLI,覆盖非法记录、资源关闭与旧格式兼容。
任务由学习者在具备环境时执行。理论推导、参考示例、个人实现和真实运行记录分别保存,故障与反例属于必需部分。
达到的能力
能逐行解释语言行为;能选择具体类型和接口;能说明资源归属;能独立维护一个有清晰 API 的 Go 包。
用解释、最小实现、失败变式、业务取舍四类证据评审。只有目录、术语定义或参考代码通过,不能直接记为掌握本卷。
本卷章节展开规则
每章从一个明确问题开始,先补齐本章所需定义,再推导机制;至少含一条完整执行过程、一个反例、分层练习、反馈与业务迁移。复杂章节拆成多课,不把整卷知识压成一次速读。
当前编写状态和章节深度要求见课程编写与能力验收。