Go 语言学习
这份笔记用来梳理 Go 的完整学习路径,不只追求会写语法,而是从语言设计、并发模型、工程实践到服务落地,逐步建立可用于真实项目的知识体系。
更详细的学习还是请参见:Go 语言学习指南
学习目标
- 理解 Go 的核心语法、类型系统与错误处理方式
- 建立对 goroutine、channel、context 的系统认知
- 掌握标准库中最常用的网络、I/O、测试与并发工具
- 能独立完成一个可部署的后端服务
- 具备基础的性能分析、调试与工程化能力
Roadmap
第一阶段:入门与语言基础
- Go 开发环境、模块管理与项目结构
- 基本语法:变量、常量、流程控制、函数
- 数组、切片、map、字符串的底层特性
- struct、method、interface 的设计思想
- 指针、值拷贝、引用语义
- 错误处理:
error、panic、recover
第二阶段:进阶语法与工程能力
- 包管理与模块化组织
- 接口抽象与依赖解耦
- 泛型基础与常见使用场景
- 反射机制及其适用边界
- 常见设计模式在 Go 中的实现方式
- 常见代码规范、lint 与格式化工具
第三阶段:并发编程
- goroutine 调度模型
- channel 通信模型与常见模式
-
select、超时控制与退出机制 -
context的取消、超时与链路传递 -
sync包:互斥锁、读写锁、WaitGroup、Once、Pool - 并发安全、竞态条件与死锁排查
第四阶段:标准库与服务开发
- 文件 I/O、缓冲、序列化与反序列化
- 时间处理、日志、配置管理
-
net/http与 HTTP 服务开发 - JSON API、参数校验与中间件设计
- 数据库访问:
database/sql、连接池、事务 - Web 框架选型与实践:Gin
第五阶段:测试、调试与性能优化
- 单元测试、表驱动测试与 benchmark
- mock、依赖注入与可测试性设计
- pprof 性能分析
- 内存逃逸、GC 基础与对象分配优化
- 常见性能瓶颈定位方法
- 调试工具与线上问题排查思路
第六阶段:工程化与云原生
- 配置分层、日志规范与错误追踪
- Docker 化部署与多环境管理
- gRPC 与微服务通信
- 消息队列、缓存与任务系统
- 可观测性:metrics、tracing、logging
- Go 在 Kubernetes / 云原生生态中的角色
第七阶段:源码与底层机制
- runtime 基础:内存分配、调度器、栈增长
- channel 与 map 的底层实现
- interface 内部表示
- GC 工作机制与优化方向
- 编译流程与常见编译参数
- 标准库源码阅读方法