posts
《Go 语言编程入门》 · 全书目录与章节索引(61 篇)
《Go 语言编程入门》全 61 篇,以 TaskAPI 一个贯穿全书的项目为主线,从安装工具链、语言基础、结构体与接口、错误处理、包与模块、测试与泛型,讲到 goroutine 与 channel、同步与竞态、context 生命周期,再到用 net/http 搭服务、数据持久化、配置分层、可观测性、交叉编译与容器化交付。示例基于 Go 1.27 在本机实跑,本页给出全书分章目录。
《Go 语言编程入门》全 61 篇,是一套以一个真实项目为主线的 Go 入门书:从第 1 章 go mod init taskapi 起,到第 18 章打包上线,TaskAPI 会一路长大——内存版存储、拆包分层、接口抽象、并发安全、HTTP 服务、数据库持久化、优雅退出、容器化交付。所有示例基于 Go 1.27 在本机实跑,关键结论以真实输出为准。
本页是《Go 语言编程入门》的全书目录:按章节顺序列出全部 61 篇,点击标题直达正文。也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇
里的三条学习路径与八周计划。
全书概览
| 项目 | 内容 |
|---|
| 书稿 | 《Go 语言编程入门》 |
| 篇数 | 61 篇(正文 18 章 54 节 + 目录篇 + 序 + 前言 + 附录 A–D) |
| 领域 | Go 语言从零到可交付服务 |
| 贯穿项目 | TaskAPI —— 一个任务管理 HTTP 服务,18 章逐步长大 |
| 阅读方式 | 从目录篇
进入按顺序通读,或按查漏场景跳读 |
| 实测版本 | Go 1.27.0(本机 GOTOOLCHAIN=go1.27.0 实跑;官方最新 stable 为 1.27.2) |
| 依赖 | 正文只用标准库,不引入任何第三方依赖 |
| 上级专题 | 书稿专题 |
全书目录
前置
| 节 | 文章 | 核心内容 |
|---|
| — | 目录与学习路径 | 全书导航页:读者定位、三条学习路径与八周计划、六部分依赖关系与 54 节逐节索引 |
| — | 序 | 更高视角:Go 在 2026 年的生态定位、为什么值得系统学、常见误解与心智模型 |
| — | 前言 | 本书怎么来的、写给谁、六部分结构、版本与排版约定、本书不写什么 |
| 附 A | 附录 A.Go 语法与惯用法速查 | 类型、变量、控制流、函数与 defer、切片、map、字符串、结构体、接口、错误、泛型、并发 12 张表 + 可运行片段 |
| 附 B | 附录 B.标准库常用 API 速查 | strings / strconv / bytes / time / encoding/json / os / io / fmt / errors / slices / maps / cmp / sync / context / net/http / log/slog 等按「想做什么 → 用哪个函数」组织,签名经 go doc 逐条核实 |
| 附 C | 附录 C.go 命令与工具链速查 | go build/run/test/vet/fmt/mod/get/work/generate/doc/env、GOTOOLCHAIN 多版本、环境变量与构建标志、交叉编译 |
| 附 D | 附录 D.常见错误与 FAQ | 15 条报错与 FAQ:declared and not used、cannot use x as T、nil map 写入、切片别名、goroutine 泄漏、context deadline exceeded、missing go.sum entry、import cycle not allowed、中文按字节切片乱码……每条给最小复现 |
第一部分:起步(第 1–3 章)
| 节 | 文章 | 核心内容 |
|---|
| 1.1 | 1.1 安装与工具链 | 多版本共存与 GOTOOLCHAIN 协商、go env 关键项、GOPROXY、gofmt 与 go vet 的位置 |
| 1.2 | 1.2 第一个程序与 go run/build | go run 与 go build 的差别、go version -m 读出构建信息、go install 落 GOBIN、os.Args 实测 |
| 1.3 | 1.3 Go Modules 与项目骨架 | go mod init 的产物、go list 系列、go mod tidy/verify/graph;实测只有标准库时不生成 go.sum |
| 2.1 | 2.1 变量、常量与基本类型 | 零值、短变量声明、iota、strconv.IntSize、float32/64 精度差、uint8 回绕、unsafe.Sizeof 宽度 |
| 2.2 | 2.2 控制流与循环 | if 初始化语句、三段式与 while 式 for、range、带标签 break、无表达式 switch、进程退出码 |
| 2.3 | 2.3 函数、多返回值与 defer | 多返回值与命名返回值、可变参数、defer 的 LIFO、defer 参数立即求值 vs 闭包延迟求值 |
| 3.1 | 3.1 数组、切片与扩容 | 数组的值语义、切片共享底层数组、append 扩容轨迹(cap 0→4→8→16)、三索引切片修复污染、copy、slices 泛型函数 |
| 3.2 | 3.2 map 与集合惯用法 | comma-ok、遍历顺序随机、不可寻址与不可比较键的编译错误原文、maps/slices 组合用法 |
| 3.3 | 3.3 字符串、rune 与字节 | len 与 RuneCountInString 的差、按字节切出非法 UTF-8、range 解码 rune 与偏移、strings.Builder、中文标题处理 |
第二部分:建模(第 4–6 章)
第三部分:工程化(第 7–9 章)
第四部分:并发(第 10–12 章)
第五部分:Web(第 13–15 章)
第六部分:交付(第 16–18 章)
| 节 | 文章 | 核心内容 |
|---|
| 16.1 | 16.1 log/slog 结构化日志 | JSON/Text Handler、With/WithGroup、LogValuer、LevelVar 动态调级、ReplaceAttr 改写键 |
| 16.2 | 16.2 pprof 与 expvar 看运行时 | /debug/pprof/ 抓取与 go tool pprof -top、runtime/pprof 离线采样、expvar 暴露自定义变量 |
| 16.3 | 16.3 健康检查与指标端点 | /healthz 与 /readyz 的语义差别、按 Prometheus 文本格式暴露 /metrics |
| 17.1 | 17.1 交叉编译与静态构建 | GOOS/GOARCH 交叉编译、-trimpath -ldflags "-s -w -X" 注入版本、//go:embed、用 file 验证产物 |
| 17.2 | 17.2 多阶段 Docker 镜像 | golang:1.27-alpine 构建阶段 + 最小运行阶段、非 root(uid 10001)、镜像约 21.5 MB(本机 Docker 实跑) |
| 17.3 | 17.3 部署与优雅重启 | 收到 TERM 后排空在途请求的真实时序、systemd 单元与部署脚本(macOS 无法执行,文中已声明) |
| 18.1 | 18.1 需求梳理与架构设计 | 全卷复盘:需求与边界、分层与依赖方向、容量与取舍、哪些设计是被后续章节逼出来的 |
| 18.2 | 18.2 端到端实现 | 串起全卷的完整链路:go vet、go test -race -cover、完整 curl 链路(POST/PATCH/GET/DELETE/404/422)与全链路日志 |
| 18.3 | 18.3 测试、打包与上线 | go tool cover -func 逐函数覆盖率、release 脚本、shasum -a 256 校验、CI YAML 形态(未执行) |
怎么用这份索引
- 顺序通读:从第 1 章 1.1
开始,每一节末尾都有上一节 / 下一节的导航。若不确定从哪开始,先看目录篇的三条学习路径
。
- 按问题跳读:切片被意外修改看 3.1、接口判 nil 为 false 看 5.1、
errors.Is 不生效看 6.2、internal 包报错看 7.1、missing go.sum entry 看 7.2、数据竞争看 11.3、请求超时没生效看 12.2、Ctrl-C 打断在途请求看 12.3、中间件顺序不对看 13.3、事务没回滚看 14.2、配置没生效看 15.1。附录 D 另有一张按报错原文索引的速查表。 - 只查 API:直接翻附录 B
与附录 C
,两者都是「想做什么 → 用哪个」的对照表,签名经
go doc 逐条核实。 - 想动手:18 章全程只有 TaskAPI 一个项目,每一节都在它的真实代码上推进,可以边读边改。
相关阅读