编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • C语言入门精通

  • Cpp入门到精通

  • Java入门精通

  • Go入门到精通

    • 入门教程

      • README
        • 目录介绍
        • 01.卷一定位与读者画像
          • 1.1 卷一在四卷本中的位置
          • 1.2 三类读者的不同读法
          • 1.3 读完卷一你将获得什么
        • 02.卷一 18 章总目录
          • 2.1 第一篇 开篇(第 1 章)
          • 2.2 第二篇 基础语法(第 2-6 章)
          • 2.3 第三篇 函数与作用域(第 7-9 章)
          • 2.4 第四篇 接口与错误(第 10-11 章)
          • 2.5 第五篇 并发三件套(第 12-14 章)
          • 2.6 第六篇 库与工程化(第 15-18 章)
        • 03.章节与文件映射表
        • 04.学习路径与时间预算
          • 4.1 8 周学习计划(推荐)
          • 4.2 速读模式(已有后端语言基础)
          • 4.3 三种典型读者路线
        • 05.卷一读者承诺与边界
          • 5.1 本卷会教你的
          • 5.2 本卷不会展开的
        • 06.每章统一结构
        • 07.如何与卷二、三、四衔接
        • 卷首寄语
        • 08.卷一改造完成度(目录连贯性自检表)
          • 8.1 全新创建的章节(4 篇)
          • 8.2 章节统一格式校验
          • 8.3 后续维护清单
      • Go简史
      • 基础语法
      • 数据类型
      • 运算符
      • 复合类型
      • 流程语句
      • 函数
      • 指针与逃逸
      • 结构体与方法
      • 接口与多态
      • 错误处理
      • 并发goroutine
      • 通道channel
      • 同步sync包
      • IO和文件
      • 标准库与泛型
      • 工程化与模块
      • 特性图谱
    • 综合案例

    • 专栏博客

    • 开发技巧

  • JavaScript入门

  • CodeX
  • Go入门到精通
  • 入门教程
杨充
2026-05-21
目录

README

# 卷一《语法卷:现代 Go 基础入门》总目录与导读

本卷是《现代 Go 由浅入深:从入门到工程精通》四卷本的第一卷。 目标:让你在 18 章篇幅内,把"会读 Go 代码"升级到"会写符合工业界习惯的 Go 代码"。 阅读层级:0 基础学生 → 转语言工程师(Java/Python/C++ 转 Go)→ 已写过 Go 但想系统补漏的开发者。


# 目录介绍

  • 01.卷一定位与读者画像
    • 1.1 卷一在四卷本中的位置
    • 1.2 三类读者的不同读法
    • 1.3 读完卷一你将获得什么
  • 02.卷一 18 章总目录
    • 2.1 第一篇 开篇(第 1 章)
    • 2.2 第二篇 基础语法(第 2-6 章)
    • 2.3 第三篇 函数与作用域(第 7-9 章)
    • 2.4 第四篇 接口与错误(第 10-11 章)
    • 2.5 第五篇 并发三件套(第 12-14 章)
    • 2.6 第六篇 库与工程化(第 15-18 章)
  • 03.章节与文件映射表
  • 04.学习路径与时间预算
    • 4.1 8 周学习计划(推荐)
    • 4.2 速读模式(已有后端语言基础)
    • 4.3 三种典型读者路线
  • 05.卷一读者承诺与边界
    • 5.1 本卷会教你的
    • 5.2 本卷不会展开的
  • 06.每章统一结构
  • 07.如何与卷二、三、四衔接
  • 08.卷一改造完成度(目录连贯性自检表)

# 01.卷一定位与读者画像

# 1.1 卷一在四卷本中的位置

                     《现代 Go 由浅入深:从入门到工程精通》

  ┌──────────────────────────────────────────────────────────┐
  │  卷一《语法卷》  ←  你在这里                               │
  │     · 现代 Go 怎么写                                      │
  │     ↓                                                    │
  │  卷二《工程卷》     · 项目怎么组织(12 个完整项目)       │
  │     ↓                                                    │
  │  卷三《底层卷》     · runtime / 调度 / GC / 编译器       │
  │     ↓                                                    │
  │  卷四《实战卷》     · 上线后怎么调与怎么活               │
  └──────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12

卷一的角色是"语言地基":

  • 不是 Tour of Go 的复刻——我们以 Go 1.22 为基线,泛型(1.18+)、内置 clear/min/max(1.21+)默认就是要会的,所有"老 Go 写法(如 interface{}、手写 sort.Interface、io/ioutil)"会被明确标注为反例。
  • 不深挖底层——GMP 调度、GC、map/channel 内部实现等内容全部留给卷三,本卷只讲"够用、能写"。
  • 不讲项目工程化——Web 框架、ORM、CI/CD 放在卷二,本卷只用 go run 与 go test。

# 1.2 三类读者的不同读法

读者画像 推荐读法 预计耗时
零基础大学生 18 章顺序通读,每章动手敲 3-5 个代码示例 6-8 周
C / C++ 转 Go 重点读第 8(指针无算术)、9(接收者)、10(接口)、12-14(并发新世界)章 3-4 周
Java / Python 转 Go 跳过第 2-6 章细节,重点读第 8、10、11、12-14、16 章 2-3 周

# 1.3 读完卷一你将获得什么

  • ✅ 读得懂任何 Go 1.22 风格的现代代码,认得出 90% 的关键字与语法
  • ✅ 能独立写出 200-500 行的小型程序(CLI 工具、HTTP 小服务)
  • ✅ 知道 slice / map / channel / interface / error 的"正确打开方式"
  • ✅ 知道 为什么不该 用 interface{}、init() 滥用、panic 当 throw、共享内存代替通信
  • ✅ 具备进入卷二(项目实战)和卷三(runtime 原理)的全部前置知识

# 02.卷一 18 章总目录

第 18 章 18.特性图谱.md 作为附录性"特性速览"贴在最末,配合全卷复盘。

# 2.1 第一篇 开篇(第 1 章)

章 文件 关键词
第 1 章 01.Go简史.md Go 1.0/1.5 自举/1.11 modules/1.18 泛型/1.21 内置/1.22 range int

# 2.2 第二篇 基础语法(第 2-6 章)

章 文件 关键词
第 2 章 02.基础语法.md package、import、go run/build/mod、现代 Hello World
第 3 章 03.数据类型.md int/uint 系列、float、string、rune、byte、零值、类型转换
第 4 章 04.运算符.md 算术/比较/逻辑/位运算、&/*、为什么 Go 没有指针算术
第 5 章 05.复合类型.md array/slice/map/struct/string 底层、为什么 slice 不是数组
第 6 章 06.流程语句.md if-init、for 三种形态、range、switch 自带 break、标签

# 2.3 第三篇 函数与作用域(第 7-9 章)

章 文件 关键词
第 7 章 07.函数.md 多返回值、命名返回、变长参数、闭包、defer 求值时机
第 8 章 08.指针与逃逸.md &/*、不能算术、栈逃逸到堆、go build -gcflags="-m"
第 9 章 09.结构体与方法.md 值接收者 vs 指针接收者、嵌入字段、Tag、== 可比较性

# 2.4 第四篇 接口与错误(第 10-11 章)

章 文件 关键词
第 10 章 10.接口与多态.md duck typing、空接口 any、类型断言、类型 switch、接口值的两个指针
第 11 章 11.错误处理.md error 接口、errors.Is/As、%w 包装、panic/recover 边界

# 2.5 第五篇 并发三件套(第 12-14 章)

章 文件 关键词
第 12 章 12.并发goroutine.md go 关键字、GMP 速览、WaitGroup、context 取消
第 13 章 13.通道channel.md 有缓冲/无缓冲、select、关闭语义、nil channel 妙用
第 14 章 14.同步sync包.md Mutex/RWMutex/Once/WaitGroup/atomic/sync.Pool

# 2.6 第六篇 库与工程化(第 15-18 章)

章 文件 关键词
第 15 章 15.IO和文件.md io.Reader/Writer、bufio、os.File、io/fs、embed
第 16 章 16.标准库与泛型.md slices/maps/cmp、泛型语法、类型约束、comparable
第 17 章 17.工程化与模块.md go.mod/go.sum/workspace/build tag///go:generate
第 18 章 18.特性图谱.md Go 1.0→1.22 全部关键特性按"使用频度 × 重要性"打分

# 03.章节与文件映射表

文件 书稿章节 改造重点(详见各章末尾"卷一改造增补")
README.md(本文件) 卷首导读 全新创建
01.Go简史.md 第 1 章 全新创建
02.基础语法.md 第 2 章 直接以 go mod init 起手,不教 GOPATH
03.数据类型.md 第 3 章 增补 rune vs byte、int 平台依赖性
04.运算符.md 第 4 章 增补「为什么 Go 没有 ++i、没有指针算术」
05.复合类型.md 第 5 章 增补 slice 底层三元组(ptr/len/cap)、map 不可寻址
06.流程语句.md 第 6 章 增补 Go 1.22 for i := range N 整数遍历
07.函数.md 第 7 章 增补 defer 求值时机三连问、recover 必须配 defer
08.指针与逃逸.md 第 8 章 全新视角:指针是"安全且能逃逸"的
09.结构体与方法.md 第 9 章 增补「接收者选择决策表」、可比较性陷阱
10.接口与多态.md 第 10 章 强化「接口值是 (itab, data) 两个指针」、nil 接口 vs nil 值
11.错误处理.md 第 11 章 增补 errors.Join(Go 1.20+)、何时用 panic
12.并发goroutine.md 第 12 章 GMP 速览(详见卷三)、context.WithCancelCause(1.20+)
13.通道channel.md 第 13 章 增补「关闭只读 channel 的编译错误」、扇入扇出模式
14.同步sync包.md 第 14 章 增补 sync.OnceFunc/OnceValue(1.21+)
15.IO和文件.md 第 15 章 增补 io/fs、embed、os.ReadFile 替代 ioutil
16.标准库与泛型.md 第 16 章 全新视角:先讲 slices/maps,再讲泛型怎么写
17.工程化与模块.md 第 17 章 增补 go work、最小版本选择算法 MVS
18.特性图谱.md 第 18 章 全新创建(卷一与后三卷的总索引)

# 04.学习路径与时间预算

# 4.1 8 周学习计划(推荐)

Week 1: 第 1-2 章   开篇 + go mod + Hello World(每天 1-2 小时,跑通 3 个示例)
Week 2: 第 3-4 章   数据类型 + 运算符(每天 2 小时,做小练习)
Week 3: 第 5-6 章   复合类型 + 流程(重点:slice / map / range)
Week 4: 第 7-8 章   函数 + 指针逃逸(每章配 5 道思考题)
Week 5: 第 9-10 章  结构体 + 接口(重点:接收者选择 / 接口隐式实现)
Week 6: 第 11-12 章 错误处理 + goroutine(重点:errors.Is、context 取消)
Week 7: 第 13-15 章 channel + sync + IO
Week 8: 第 16-18 章 泛型 + 工程化 + 特性图谱(边读边查)
1
2
3
4
5
6
7
8

# 4.2 速读模式(已有后端语言基础)

Day 1:  第 1、18 章(看演进 + 特性图谱)
Day 2:  第 5(slice/map)、7(defer)、8(逃逸)、9(接收者)章
Day 3:  第 10(接口)、11(错误)章
Day 4:  第 12(goroutine)、13(channel)、14(sync)章
Day 5:  第 16(泛型)、17(工程化)章
1
2
3
4
5

# 4.3 三种典型读者路线

零基础学生:     1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10 → 11 → 12 → 13 → 14 → 15 → 16 → 17 → 18
C / C++ 转 Go:  1 → 8(指针无算术)→ 5(slice)→ 9(接收者)→ 10(接口 vs 虚函数)→ 11(无异常)→ 12-14 → 18
Java / Python 转:1 → 5 → 7 → 8 → 10(接口隐式)→ 11 → 12-14 → 16 → 18
1
2
3

# 05.卷一读者承诺与边界

# 5.1 本卷会教你的

  • ✅ 现代 Go 的"日常写法"(Go 1.22 为主,关键 1.18-1.23 特性预告)
  • ✅ 所有基础语法、关键字、修饰符的实际用法和取舍
  • ✅ 常见陷阱(slice 共享底层数组 / 闭包变量捕获 / nil 接口 / goroutine 泄漏)的识别与回避
  • ✅ 标准库高频包(fmt/strings/io/os/sync/context/errors/slices/maps)的使用
  • ✅ "如果做错了会怎样"——每章末尾「Go 新手陷阱 Top 5」

# 5.2 本卷不会展开的

下表的内容会被提到、留链接,但展开讲的是后三卷:

主题 在哪一卷讲
GMP 调度器、抢占机制 卷三第 6 章
GC 三色标记、写屏障、混合屏障 卷三第 7 章
channel 源码(hchan / sudog) 卷三第 8 章
sync.Mutex / RWMutex / WaitGroup 源码 卷三第 9 章
map 源码(hmap / bmap / overflow) 卷三第 10 章
泛型实现原理(GC shape / dictionary) 卷三第 11 章
context 取消传播链 卷三第 12 章
反射与 unsafe 边界 卷三第 13 章
panic/recover 栈展开 卷三第 14 章
netpoller / epoll 集成 卷三第 15 章
编译器、汇编、链接器 卷三第 16 章
pprof / trace / Delve / OOM 排查 卷四全卷
Web 框架 / ORM / 微服务 不在本系列范围

如果你在卷一读到某个概念觉得"没讲透",不是漏写,而是刻意延迟——在该处会有"➡ 展开见 卷三第 X 章"的指引。

# 06.每章统一结构

为了便于阅读和复习,卷一从第 2 章开始,所有章节都遵循以下统一结构:

1. 章节目录(自动生成的锚点链接)
2. 本章学习目标(3-5 条 bullet)
3. 主体内容(按 N.1 / N.2 / N.3 ... 分节)
   每个三级小节内部:
     · 概念解释
     · 至少 1 个完整可运行示例(含 package main)
     · "综合思考"小练习
4. 本章底层原理(简介,详见卷三)
5. 章末「Go 新手陷阱 Top 5」
6. 思考题(5-10 题)
7. 推荐阅读(卷内 / 跨卷链接)
1
2
3
4
5
6
7
8
9
10
11

**章末「Go 新手陷阱 Top 5」**是本书相比传统 Go 教材最大的差异之一——它直接告诉你"哪些代码 编译过 / 跑得通 / 但是错的"。

例如第 12 章末尾:

// ❌ 共享变量陷阱(Go 1.21 及之前的"史诗级"坑)
for _, v := range slice {
    go func() { fmt.Println(v) }()  // 所有 goroutine 打印同一个 v
}

// ✅ Go 1.22 起 v 每轮迭代是新变量,不再有此问题
// 但你仍然要懂为什么旧版本是错的,因为你会维护老代码
1
2
3
4
5
6
7

# 07.如何与卷二、三、四衔接

卷一章节 卷二对应 卷三对应 卷四对应
第 5 章 复合类型 — 第 4 章 字符串与切片底层 —
第 8 章 指针与逃逸 — 第 2 章 指针与逃逸分析 第 9 章 性能优化
第 9 章 结构体与方法 第 1-3 章 OOP 案例 第 3 章 结构体与对齐 —
第 10 章 接口与多态 第 3 章 多态首用 / 第 8 章 策略模式 第 5 章 接口与类型系统 —
第 11 章 错误处理 第 4、10、11 章 第 14 章 错误与 panic 机制 第 2 章 panic 全景图
第 12 章 goroutine 第 7、9 章 第 6 章 GMP 调度器 第 5 章 goroutine 泄漏
第 13 章 channel 第 9 章 协程池 第 8 章 channel 源码 —
第 14 章 sync 包 第 4、7、9 章 第 9 章 sync 源码 —
第 15 章 IO 与文件 第 2、4、6、12 章 第 15 章 网络 IO —
第 16 章 泛型 第 9、10 章 第 11 章 泛型实现 —
第 17 章 工程化 卷二全卷 第 16 章 编译链接 第 11 章 PGO
第 18 章 特性图谱 (索引性章节) (索引性章节) (索引性章节)

读者完成卷一后,可以根据兴趣选择任意一卷继续深入;建议优先级:

工程师:     卷二(项目)→ 卷四(实战)→ 卷三(底层)
学生 / 面试: 卷三(底层)→ 卷四(实战)→ 卷二(项目)
团队 Lead:   卷四(实战)→ 卷二(项目)→ 卷三(底层)
1
2
3

# 卷首寄语

"Go is about composition. Java is about types. C++ is about features." — Rob Pike

Go 的入门曲线之所以平缓,是因为它故意舍弃了大量"花哨特性"——没有继承、没有泛型(直到 1.18)、没有异常、没有运算符重载——它把语法精简到只有 25 个关键字,同时把"工业实践"内置:gofmt 干掉了所有缩进战争,go test 干掉了选型纠结,go mod 干掉了依赖管理之争。

但正是这种"少即是多"的哲学,反而让从 Java / C++ 转过来的工程师不适应——你会发现"我以前那么写不行了":

  • 没有继承,怎么实现"是一个"关系?→ 接口隐式实现 + 嵌入字段(第 9-10 章)
  • 没有异常,错误怎么传?→ 多返回值 + error 接口(第 11 章)
  • 没有线程,怎么并发?→ goroutine + channel(第 12-13 章)

本卷会从第一行代码就用 Go 1.22 的现代写法,让你不必先学一遍"过时的 Go"再忘掉它。

翻开第 1 章,让我们从 Go 的简史开始。

➡ 下一章:第 1 章 Go 简史与版本演进

# 08.卷一改造完成度(目录连贯性自检表)

本节记录卷一改造的完整轨迹,便于后续维护与读者交叉参考。

# 8.1 全新创建的章节(4 篇)

文件 行数预估 角色
01.Go简史.md ~500 第 1 章
08.指针与逃逸.md ~600 第 8 章(区别于 C++ 的指针章)
16.标准库与泛型.md ~700 第 16 章(合并 STL + 泛型视角)
18.特性图谱.md ~465 第 18 章

# 8.2 章节统一格式校验

  • ✅ 文件名统一为 NN.4-8字.md 格式
  • ✅ 每篇正文章号(H1 与目录前缀)与文件序号同步:第 N 章 ↔ NN.xxx.md
  • ✅ 每章节末尾均统一为:主体内容 → 综合思考题 → 卷一改造增补 → Go 新手陷阱 Top 5 → 推荐阅读
  • ✅ 跨章引用全部使用相对路径

# 8.3 后续维护清单

  • 卷二开始撰写后,回填 §07 的卷二具体章节链接
  • 卷三开始撰写后,回填 §07 的卷三具体章节链接
  • 当 Go 1.23 / 1.24 引入新特性后,更新 18.特性图谱.md
上次更新: 2026/06/10, 11:13:41
SPI与模块化设计
Go简史

← SPI与模块化设计 Go简史→

最近更新
01
信号崩溃快速排查
06-15
02
CoreDump破案
06-15
03
perf火焰图实战
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式