本计划旨在提供一个从基础到核心、从标准库到运行时的全方位阅读路径。建议基于 Go 1.21+ 版本。

阶段一:基础数据结构 (Basic Data Structures)

理解 Go 语言最基础的构建块,关注内存布局与扩容机制。

  • src/runtime/slice.go: Slice (切片)
  • src/runtime/string.go: String (字符串)
  • src/runtime/map.go: Map (哈希表)
  • src/runtime/iface.go & eface.go: Interface (接口底层实现)

阶段二:并发原语 (Concurrency Primitives)

深入理解 Go 的灵魂,包括内置的 chansync 包。

  • src/sync/atomic/: Atomic (原子操作)
  • src/runtime/chan.go: Channel (通道)
  • src/sync/mutex.go: Mutex & RWMutex (互斥锁与读写锁)
  • src/sync/waitgroup.go: WaitGroup
  • src/sync/once.go: Once
  • src/sync/cond.go: Cond (条件变量)
  • src/sync/pool.go: Pool (对象池)
  • src/sync/map.go: sync.Map (线程安全 Map)

阶段三:运行时 Runtime (The Core)

这是最硬核的部分,决定了 Go 的性能与行为。

  • 调度器 (Scheduler): src/runtime/proc.go (GMP 模型、sysmon)
  • 栈管理 (Stack Management): src/runtime/stack.go (连续栈、栈扩容)
  • 内存分配 (Memory Allocation): src/runtime/malloc.go, mheap.go, mcentral.go, mcache.go
  • 垃圾回收 (GC): src/runtime/mgc.go (三色标记、STW、辅助标记)
  • 定时器 (Timer): src/runtime/time.go (四叉堆实现与优化)

阶段四:标准库与工程实践 (Standard Library)

学习官方如何利用上述原语构建高性能组件。

  • Context: src/context/context.go (上下文控制)
  • Net/HTTP: src/net/http/ (Server 实现、Transport 连接池)
  • IO: src/io/io.go & src/bufio/bufio.go (接口抽象与缓冲)
  • Reflect: src/reflect/ (反射的实现原理与性能开销)
  • Errors: src/errors/ (1.13+ 的 error wrapping)

阶段五:工具链与底层 (Toolchain & Low Level)

  • CGO: src/runtime/cgocall.go
  • System Calls: src/syscall/
  • Compiler/Linker: (可选) src/cmd/compile/