Go语言学习线路
[ 2025.4.18更新 ]
第一阶段:入门基础(语法基础)学习Go入门
目标:掌握 Go 的基本语法、变量、函数等,为后续深入学习打基础。
1. 基础语法 学习基础语法
- Go 程序结构(包、主函数)
- 注释(单行、多行)
- 编译与运行方式
2. 变量声明与常量 学习变量
- 显式声明、类型推断 学习类型转换和推断
- 常量与 iota 使用
3. 数据类型 学习基础数据类型
- 布尔类型
- 整型(int、int8/16/32/64、uint)
- 字节类型(byte、rune)
- 浮点类型(float32、float64)
- 复数类型(complex64/128)
4. 控制结构
5. 函数 学习函数
- 函数定义、参数、返回值
- 命名返回值
- 可变参数
- 多返回值函数
第二阶段:核心能力(语言特性)
目标:掌握 Go 的结构体、接口、并发机制与容器类型。
1. 结构体与方法 学习结构体
- 自定义结构体
- 方法定义与接收器
- 构造函数模式
2. 接口 学习接口
- 定义与实现
- 接口组合
- 类型断言、类型 switch 学习类型断言
3. 容器
4. 错误处理 学习错误处理
- error 类型
- 自定义错误
- panic 与 recover 机制
5. 进阶知识
第三阶段:并发编程
目标:掌握 Go 并发模型和同步机制。
1. Goroutines 学习并发
- 并发启动
- 注意栈空间与调度
2. 通道(Channel)
- 无缓冲与带缓冲通道
- select 多路复用 学习select
- close 通道的使用
3. 同步机制
- 互斥锁(sync.Mutex) 学习Mutex
- 原子操作(sync/atomic)
4. 并发原理 学习Context高级并发
- 调度器 学习Scheduler调度器
第四阶段:模块与工具
目标:掌握项目组织、模块化、依赖管理与构建工具。
1. Go Modules 学习Module
- 初始化与使用
- go.mod 和 go.sum
- 多模块项目结构
- 包管理 学习包管理
2. 常用构建工具
- 构建命令:go build、go install
- 测试命令:go test、go benchmark
3. 常用命令和工具
- 格式化(go fmt)
- 静态检查(go vet)
- 性能分析(pprof)
第五阶段:Web开发框架与CLI工具
目标:了解 Go 在 Web 后端领域的应用和工具生态。
1. Web 框架
- Gin(最常用、简洁高效) 学习Gin
- Beego(全栈式)
- Echo、Revel、Buffalo、Gorilla
2. CLI 应用开发 学习CLI
- cobra(流行的命令行工具库)
- urfave/cli(简洁直观)
3. JSON 处理 学习JSON交互
- encoding/json
- Marshal 和 Unmarshal
4. 上下文管理 学习Context高级并发
- context 包的使用
- 超时控制与取消传播
5. Web综合
- GORM 学习GORM
- Gin+GORM 学习Gin+GORM
- Gin+JWT学习Gin+JWT
- Swagger学习Swagger
- Gin+Redis学习Gin+Redis
第六阶段:高级特性与微服务实践
目标:深入服务开发与微服务组件集成。
1. 网络通信
- 原生 HTTP 客户端和服务端
- 实现 RESTful API 客户端(如 Heimdall、GRequests) 学习Gin+REST
- GraphQL 支持(graphql-go、gqlgen)学习GraphQL
2. 微服务工具
- 消息队列:Watermill
- 服务框架:Go-kit、rpcx、go-zero、Micro
3. 实时通信
- Melody(WebSocket 封装)
- Centrifugo(高性能实时通信框架)
4. 协议通信
- Protocol Buffers
- gRPC-Go、gRPC-gateway、twirp
5. 日志库
- Zap(高性能日志库) 学习Gin+Zap
- Logrus(结构化日志)
第七阶段:项目实践与测试
目标:通过实际项目提升综合能力。
1. 项目实战
- 开发一个博客系统或 ToDo 管理系统
- 实现 JWT 登录、权限控制、中间件处理
2. 单元测试与覆盖率
- go test 使用
- mock 测试
- 接口与集成测试
3. 性能优化
- 使用 pprof 进行性能分析
- 常见优化手段(减少 GC、避免反射)
学习建议与资源推荐
学习建议:
- 建议从控制台程序开始,再进入 Web 开发
- 多做练习,每学完一个阶段做小项目
- 阅读官方文档和优秀项目源码