Go 开发完整学习指南
Go 开发完整学习指南
面向有编程基础的工程师,系统覆盖 Go 项目工程化、核心语言特性、标准库全量参考、生产级实践。
学习路线图
阶段一:工程化基础(1-2周)
├── 模块与包管理(go mod)
├── 项目目录结构规范
├── 构建工具链(go build/test/install/compile)
└── 测试体系(单元测试/基准测试/模糊测试)
阶段二:核心语言特性(2-3周)
├── 类型系统(值类型/引用类型/指针/结构体)
├── 并发模型(goroutine/channel/select)
├── 错误处理(error/panic/recover/wrap)
├── 接口与反射(interface/reflect/type assertion)
└── 泛型(type parameters/constraints)
阶段三:标准库精读(4-6周)
├── IO 与文件系统(os/io/bufio/path/filepath)
├── 字符串与文本(strings/strconv/regexp/bytes/template)
├── 编码与序列化(json/xml/csv/binary/gob)
├── 并发原语(sync/context/atomic)
├── 网络编程(net/net/http/net/url)
├── HTTP 服务端(net/http 全栈)
├── 时间处理(time)
├── 数学计算(math/math/big/math/rand)
├── 加密与安全(crypto/*)
├── 运行时与调试(runtime/pprof/trace)
├── 操作系统交互(os/exec/signal/syscall)
├── 日志体系(log/log/slog/errors)
├── 排序与集合(sort/container/*)
├── Go AST 与工具链(go/*)
└── 测试框架(testing/*)
阶段四:生产级实践(持续)
├── 项目布局最佳实践
├── 配置管理(viper/envconfig/自研)
├── 依赖注入(wire/fx/手写)
├── 可观测性(日志/指标/链路追踪)
└── 性能优化与调优
标准库分类总览
| 分类 | 包路径 | 核心用途 | 优先级 |
|---|---|---|---|
| IO 基础 | io io/fs | Reader/Writer 抽象接口 | P0 |
| 文件系统 | os path/filepath | 文件操作、环境变量、进程 | P0 |
| 缓冲 IO | bufio | 带缓冲的读写 Scanner | P0 |
| 字符串 | strings strconv | 字符串操作与类型转换 | P0 |
| 字节切片 | bytes | 可变字节缓冲操作 | P0 |
| 格式化 | fmt | 格式化 I/O | P0 |
| 错误处理 | errors | 错误创建与包装 | P0 |
| 日志 | log log/slog | 结构化日志 | P0 |
| 时间 | time | 时间解析、定时器、格式化 | P0 |
| 并发原语 | sync sync/atomic | 互斥锁、原子操作、WaitGroup | P0 |
| 上下文 | context | 超时控制、取消传播、值传递 | P0 |
| JSON | encoding/json | JSON 序列化/反序列化 | P0 |
| HTTP | net/http | HTTP 客户端与服务端 | P0 |
| 网络 | net net/url | TCP/UDP/Unix Socket | P1 |
| 正则 | regexp | 正则表达式匹配 | P1 |
| 模板 | text/template html/template | 模板渲染 | P1 |
| 编码 | encoding/xml encoding/csv encoding/binary | 其他编码格式 | P1 |
| 加密哈希 | crypto/sha256 crypto/hmac crypto/aes | 哈希、对称加密 | P1 |
| TLS | crypto/tls crypto/x509 | 传输层安全 | P1 |
| 数学 | math math/big math/rand | 数学运算与大数 | P1 |
| 反射 | reflect | 运行时类型检查 | P2 |
| 运行时 | runtime runtime/debug runtime/pprof | GC、goroutine、性能分析 | P2 |
| 系统调用 | os/exec os/signal syscall | 进程执行、信号处理 | P2 |
| 排序 | sort | 排序与搜索 | P1 |
| 容器 | container/list container/heap container/ring | 链表/堆/环 | P2 |
| 压缩 | compress/gzip compress/zlib archive/tar archive/zip | 压缩与归档 | P2 |
| Go AST | go/ast go/parser go/token go/format | 源码分析与代码生成 | P3 |
| 测试 | testing testing/fstest testing/quick | 测试框架 | P1 |
| 不安全 | unsafe | 底层内存操作 | P3 |
目录结构
go-dev-guide/
├── 00-概述与学习路径.md ← 你在这里
├── 01-工程化/
│ ├── 01-模块与包管理.md
│ ├── 02-项目目录结构.md
│ ├── 03-构建工具链.md
│ └── 04-测试体系.md
├── 02-语言特性/
│ ├── 01-类型系统.md
│ ├── 02-并发模型.md
│ ├── 03-错误处理.md
│ ├── 04-接口与反射.md
│ └── 05-泛型.md
├── 03-标准库/
│ ├── 01-IO与文件系统.md
│ ├── 02-字符串与文本处理.md
│ ├── 03-编码与序列化.md
│ ├── 04-并发原语.md
│ ├── 05-网络编程.md
│ ├── 06-HTTP服务.md
│ ├── 07-时间处理.md
│ ├── 08-数学计算.md
│ ├── 09-加密与安全.md
│ ├── 10-运行时与调试.md
│ ├── 11-操作系统交互.md
│ ├── 12-日志与错误.md
│ ├── 13-排序与集合.md
│ ├── 14-Go-AST与工具链.md
│ └── 15-测试框架.md
└── 04-生产实践/
├── 01-项目布局最佳实践.md
├── 02-配置管理.md
├── 03-依赖注入.md
└── 04-可观测性.md
学习建议
- P0 标准库优先:
fmt/os/strings/errors/sync/context/net/http/encoding/json这 8 个包覆盖了日常 80% 的场景 - 边学边写:每个包学完写一个小 demo,不要只看不练
- 读源码:标准库源码是最好的 Go 教材,从
strings包开始读(代码量小、质量高) - 对标你的项目:care-mate 项目(Go 后端 + SkyWalking)就是最好的练手场
- 并发是核心:Go 的并发模型是它区别于其他语言的最大优势,花足够时间在
goroutine/channel/select/context上