学什么下载安装 Go,配置 GOPATH / GOROOT,VS Code + Go 插件
推荐教程Go 官方安装指南B站环境搭建视频
练习写 Hello World + 加减乘除计算器
过关标准能运行 go version、go run,配置好 VS Code 自动补全
学什么变量、常量、数据类型、流程控制、函数(多返回值、defer)、结构体、方法
推荐教程《Go 程序设计语言》Go by ExampleTour of Go
练习斐波那契数列 · 学生成绩管理系统 · 命令行待办事项工具
过关标准能独立写带结构体、方法、slice 操作的程序,理解值/引用类型区别
学什么fmt、strings、strconv、time、os、io、bufio、json、net/http、flag 等核心包
推荐教程Go 标准库中文文档官方文档 + 翻源码
练习flag 命令行工具 · json 读写配置文件 · net/http 静态文件服务器
过关标准能熟练查阅标准库文档,遇到问题知道去哪个包找答案
学什么goroutine、channel、select、sync 包(WaitGroup/Mutex/RWMutex/Once)、Context、并发模式
推荐教程《Go 语言并发之道》B站并发编程视频
练习并发下载文件 · 生产者-消费者 · 并发爬虫(控制并发数)
过关标准能解释 goroutine 和线程的区别,能写出无 data race 的并发程序,会用 -race 检测
学什么net/http 深入、Gin 框架、RESTful API、中间件、模板渲染
推荐教程Gin 官方文档《Go Web 编程》
练习博客后端(注册登录、文章 CRUD)· JWT 鉴权中间件 · 短链接服务
过关标准能独立搭建带鉴权、中间件、RESTful API 的 Web 服务
学什么MySQL/PostgreSQL 基础、database/sql、GORM、Redis 基础
推荐教程GORM 官方文档Redis 入门指南
练习博客数据迁移到 MySQL · GORM 关联查询 · Redis 缓存加速
过关标准能写 CRUD、会使用事务、能解释并解决 N+1 查询问题
学什么微服务架构、gRPC、服务注册发现(Consul/etcd)、API 网关、消息队列、Docker
推荐教程gRPC 官方文档《微服务架构设计模式》
练习拆分博客为多服务(用户/文章/评论)· gRPC 通信 · Docker Compose 编排
过关标准能设计微服务架构,能写 proto 文件并生成代码,理解服务间通信方式
学什么Docker 镜像构建、Docker Compose、CI/CD(GitHub Actions)、Nginx 反向代理、日志收集
推荐教程Docker 从入门到实践GitHub Actions 文档
练习项目 Docker 化 · 编写 Dockerfile + docker-compose.yml · 配置 GitHub Actions 自动部署
过关标准能独立将项目打包成 Docker 镜像并部署运行,能配置简单的 CI/CD 流水线
语法 + 标准库阶段
Web + 数据库阶段
并发 + 微服务阶段
Go 1.16 之后推荐用 Go Modules,不要再把项目放 $GOPATH/src 下了,用 go mod init 初始化项目。
在 goroutine 中直接使用 for 循环变量,会导致所有 goroutine 共享最后一个值。
defer 在函数返回时才执行,如果在循环里用 defer 关闭资源,会等到整个函数结束才关闭,容易导致资源耗尽。建议在循环内用匿名函数包裹。
var s []int 是 nil,s := []int{} 是空切片,JSON 序列化时行为不同(nil 输出 null,空切片输出 [])。
一个接口变量在底层类型和值都为 nil 时才为 nil,如果接口变量持有 (*T)(nil),则接口本身不是 nil。
数据库查询后一定要 defer rows.Close(),否则连接池会被耗尽。
Go 的 map 不是并发安全的,并发读写会 panic。必须用 sync.Mutex 或 sync.Map。