Go 全栈开发:和 Codex 一起从零上线
这不是一本要求你先背完语法再做项目的书。我们会从第一章就让程序运行起来,然后围绕一个真实的小产品不断增加能力。你最终会完成 GoTask:一个支持注册登录、创建任务、修改状态、搜索与分页的任务管理应用。它有 Go API、PostgreSQL 数据库、React 页面、自动化测试、Docker 开发环境和生产部署方案。
Codex 会像结对编程伙伴一样贯穿全书:帮你检查电脑、执行安装命令、解释报错、生成小步代码、补测试和做代码审查。不过,Codex 不是“替你点一下就完成 ”的魔法按钮。每次让它改代码前,你都要说清目标、限制和验收命令;每次改完都要阅读差异并亲自运行验证。教程会反复练习这个闭环。
速成框架是什么
本书使用一套刻意保持简单的全栈框架。这里的“框架”不是又发明一个第三方库,而是一套经过约束的技术栈、目录结构和工作方法:
gotask/
├── cmd/api/ # Go 程序入口
├── internal/
│ ├── config/ # 环境配置
│ ├── domain/ # Task、User 等业务对象
│ ├── repository/ # 数据访问
│ ├── service/ # 业务规则
│ └── http/ # Gin 路由、中间件、处理 器
├── migrations/ # 数据库版本脚本
├── web/ # React + TypeScript 前端
├── .env.example # 可公开的配置示例
├── compose.yaml # 本地 PostgreSQL 与应用
├── Dockerfile # 生产镜像
├── go.mod
└── Makefile # 统一常用命令
后端选用 Go、Gin、GORM 和 PostgreSQL。它们资料丰富、反馈直接,适合第一次完成全栈闭环。前端选用 React、TypeScript 和 Vite,便于理解现代浏览器应用如何调用 API。Docker Compose 让不同操作系统获得相近的数据库环境。测试主要使用 Go 标准库和 httptest,先掌握原理,再决定是否引入更多工具。
这套结构有一条重要边界:HTTP 层只处理协议,Service 层表达业务规则,Repository 层负责保存数据。初学阶段不追求抽象数量,而追求任何代码都能回答“它为什么放在这里”。
六个部分的学习路线
| 部分 | 你会完成什么 | 主要能力 |
|---|---|---|
| 第 1 部分:和 Codex 搭好起点 | 环境、项目骨架、第一个 HTTP 服务 | 终端、Git、Go Module、提示词与验证 |
| 第 2 部分:用任务程序学会 Go | 一个可保存数据的命令行任务程序 | 类型、控制流、函数、结构体、接口、错误、并发 |
| 第 3 部分:搭建 Gin 后端 | 分层的 REST API | HTTP、JSON、路由、校验、中间件、日志、配置 |
| 第 4 部分:接入数据库与登录 | 持久化和受保护的用户任务 | PostgreSQL、GORM、迁移、事务、密码、JWT |
| 第 5 部分:完成 React 前端 | 可实际操作的任务管理页面 | TypeScript、组件、表单、请求、认证、状态与体验 |
| 第 6 部分:测试、容器化与上线 | 可交付的完整应用 | 测试、Docker、CI、部署、安全、监控与迭代 |
全书共 42 章,每部分 7 章。建议每章预留 60 到 120 分钟。不要连续阅读很多章却不执行命令;一章的完成标准是“交付物真的在你的电脑上运行”,不是“感觉看懂了”。
你和 Codex 的协作协议
每章都会给出可直接使用的提示词。把其中的路径、操作系统和报错替换为你的实际情况。例如:
你是我的 Go 结对教练。请先检查当前目录和现有文件,不要直接重写项目。
目标:完成本章的健康检查接口。
限制:使用 Go 标准库;一次只做一个最小步骤;新增代码要有测试。
验收:go test ./... 和 go run ./cmd/api 都能成功。
每一步先解释目的,再执行;完成后总结修改文件和我应该理解的 3 个知识点。
一个可靠的回合通常是:先让 Codex 检查现状,再让它提出小计划,然后执行一个步骤,接着运行格式化、测试或构建命令,最后查看差异。遇到错误时,把完整命令、完整错误和你期望发生的结果一起交给它。不要只说“不能用,帮我修”。
永远不要把真实密码、云密钥、数据库生产连接串或 .env 内容发进提示词,也不要让 Codex 把它们写入仓库。教程只提交 .env.example,真实值保留在本机或部署平台的 Secret 中。
每章怎样才算完成
你会在每章看到一个明确交付物,以及“检查点”“思考题”或“延伸练习”。请至少完成检查点。代码由 Codex 生成也 没有关系,但你必须能解释入口在哪里、数据怎样流动、失败时返回什么,并能在没有提示的情况下重新运行验收命令。
建议维护一个 LEARNING.md,每章只写四项:今天完成了什么、遇到的错误、错误的真正原因、下次能独立完成什么。让 Codex 帮你整理可以,但先写自己的判断。学习编程最宝贵的不是拥有一份正确代码,而是建立“提出假设、运行验证、根据证据修正”的习惯。
准备好后,从第 1 部分开始。你不需要等到完全理解才前进,但每一步都需要真实运行。