外观
Go 学习路线
面向有 JavaScript / TypeScript、Vue 3、Three.js 经验的前端开发者。 Go 核心基础不跳过;前端已熟悉的概念会标注「可加速」,但仍需通过 Go 代码实践验证。
路线总览
Phase 01 Go Fundamentals 基础语法与类型
↓
Phase 02 Go Core interface / error / 并发
↓
Phase 03 Go Web HTTP / REST API
↓
Phase 04 Database PostgreSQL / SQL
↓
Phase 05 Redis 缓存 / Session / Pub/Sub
↓
Phase 06 Real-time WebSocket / 实时数据
↓
Phase 07 Engineering 工程化 / 测试 / Docker
↓
Phase 08 Deployment Linux / Nginx / 上线Phase 01 — Go Fundamentals
目标:建立 Go 语言基础,理解 Go 与 JavaScript / TypeScript 在类型、内存、编译模型上的本质差异。
| 序号 | 知识点 | 说明 | 前端对比 |
|---|---|---|---|
| 01 | Go 环境 | 安装 Go、GOPATH/GOROOT、go run / go build | 类比 Node.js 安装与 npm |
| 02 | go mod | 模块管理、依赖版本 | 类比 package.json |
| 03 | package | 包声明、导入、可见性 | 类比 ES module |
| 04 | variable | 变量声明、短声明 :=、零值 | 类比 let / const |
| 05 | constant | 常量、iota | 类比 const |
| 06 | basic types | int、float、string、bool、byte、rune | 类比 JS 类型,但静态强类型 |
| 07 | array | 固定长度数组 | 类比 Array,但长度是类型一部分 |
| 08 | slice | 动态切片,核心数据结构 | 类比 Array,机制完全不同 |
| 09 | map | 键值映射 | 类比 Map / Object |
| 10 | struct | 结构体,组合优于继承 | 类比 interface / object |
| 11 | function | 函数、多返回值、命名返回值 | 类比 function |
| 12 | pointer | 指针,Go 与 JS 最大差异之一 | 必须重点学习,无 JS 等价物 |
| 13 | method | 方法、值接收者 vs 指针接收者 | 类比 class method |
阶段产出:能独立编写包含 struct、slice、map、function 的 Go 程序。
前端特别提示:
slice和pointer是前端开发者最容易踩坑的两处,不可因熟悉 Array 而跳过struct不是 class,没有继承,用组合
Phase 02 — Go Core
目标:掌握 Go 的核心机制——interface、error 处理和并发模型。
| 序号 | 知识点 | 说明 | 前端对比 |
|---|---|---|---|
| 01 | interface | 隐式实现、鸭子类型 | 类比 TS interface,但机制不同 |
| 02 | error | 错误值、错误处理模式 | 类比 throw,但不用 try-catch |
| 03 | defer | 延迟执行、资源清理 | 类比 finally / cleanup |
| 04 | panic | 不可恢复错误 | 类比 throw uncaught |
| 05 | recover | 捕获 panic | 类比 catch,但使用场景不同 |
| 06 | JSON | encoding/json 序列化 | 前端非常熟悉,重点学 Go 侧 tag |
| 07 | package design | 包组织、internal、可见性 | 类比 monorepo 模块划分 |
| 08 | goroutine | 轻量级协程 | 只能类比 async,机制不同 |
| 09 | channel | 协程间通信 | 只能类比 Queue,机制不同 |
| 10 | select | 多 channel 选择 | 无直接等价物 |
| 11 | WaitGroup | 等待多个 goroutine 完成 | 类比 Promise.all |
| 12 | Mutex | 互斥锁 | 类比 Web Worker 锁概念 |
| 13 | Context | 超时、取消、传值 | 类比 AbortController |
阶段产出:能编写带 error 处理、JSON 解析和基础并发的 Go 程序。
前端特别提示:
interface是隐式实现,与 TypeScript 显式 implements 完全不同goroutine+channel是 Go 并发核心,不能等同于 Promise / async-awaiterror是返回值,不是异常,这是 Go 与 JS 最大的编程习惯差异
Phase 03 — Go Web
目标:使用 Go 构建 REST API,对接 Vue 前端。
| 序号 | 知识点 | 说明 | 前端对比 |
|---|---|---|---|
| 01 | HTTP | 请求 / 响应、状态码、Header | 前端已熟悉,可加速 |
| 02 | REST API | 资源设计、HTTP 动词 | 前端已熟悉,可加速 |
| 03 | net/http | 标准库 HTTP 服务器 | 类比 Express,但标准库 |
| 04 | Handler | 处理函数、Request / Response | 类比 route handler |
| 05 | Router | 路由注册 | 类比 Vue Router / Express router |
| 06 | Middleware | 中间件链 | 前端中间件概念相同 |
| 07 | Gin | 轻量 Web 框架 | 类比 Express / Koa |
| 08 | Validation | 请求参数校验 | 类比表单校验 |
| 09 | CORS | 跨域处理 | 前端非常熟悉 |
| 10 | JWT | 无状态认证 | 前端已接触,学 Go 侧实现 |
| 11 | API design | RESTful 设计规范 | 前后端协作视角 |
阶段产出:完成 Project 01 — Go REST API。
前端特别提示:
- HTTP / REST / CORS 概念你已熟悉,重点放在 Go 服务端实现
- 先用
net/http理解原理,再引入 Gin
Phase 04 — Database
目标:使用 PostgreSQL 持久化数据,掌握 SQL 与 Go 数据库操作。
| 序号 | 知识点 | 说明 |
|---|---|---|
| 01 | SQL | 基础查询语法 |
| 02 | PostgreSQL | 安装、连接、基本操作 |
| 03 | Table | 表设计 |
| 04 | Primary Key | 主键 |
| 05 | Foreign Key | 外键、关联 |
| 06 | Index | 索引优化 |
| 07 | JOIN | 表连接查询 |
| 08 | Transaction | 事务 |
| 09 | database/sql | Go 标准库数据库接口 |
| 10 | Connection Pool | 连接池 |
| 11 | Repository | 数据访问层模式 |
| 12 | ORM | 可选,了解 sqlc / GORM 基础 |
阶段产出:Project 01 接入 PostgreSQL,实现完整 CRUD。
Phase 05 — Redis
目标:使用 Redis 实现缓存、Session 和消息发布订阅。
| 序号 | 知识点 | 说明 |
|---|---|---|
| 01 | Redis 基础 | 安装、数据结构概览 |
| 02 | String | 字符串操作 |
| 03 | Hash | 哈希表 |
| 04 | List | 列表 |
| 05 | Set | 集合 |
| 06 | Sorted Set | 有序集合 |
| 07 | TTL | 过期策略 |
| 08 | Cache | 缓存模式 |
| 09 | Session | 会话存储 |
| 10 | Pub/Sub | 发布订阅 |
阶段产出:为 Project 02 的实时系统准备 Redis 基础设施。
Phase 06 — Real-time
目标:构建 WebSocket 实时通信服务,支撑 Three.js 实时数据展示。
| 序号 | 知识点 | 说明 |
|---|---|---|
| 01 | WebSocket | 协议基础、握手 |
| 02 | Connection | 连接管理 |
| 03 | Message | 消息格式设计 |
| 04 | Heartbeat | 心跳保活 |
| 05 | Reconnect | 断线重连策略 |
| 06 | Broadcast | 广播推送 |
| 07 | Room | 房间 / 频道隔离 |
| 08 | Concurrent Connections | 高并发连接处理 |
| 09 | Real-time Data Pipeline | 实时数据管道 |
阶段产出:完成 Project 02 — Real-time Server。
前端特别提示:
- 你在 Three.js 中消费 WebSocket 数据,本阶段重点是从 Go 服务端推送
- 消息格式设计要考虑 Three.js 场景中的设备 ID、位置、状态字段
Phase 07 — Engineering
目标:建立工程化能力,使项目可测试、可部署。
| 序号 | 知识点 | 说明 |
|---|---|---|
| 01 | Project Architecture | 项目分层与目录结构 |
| 02 | Configuration | 配置管理 |
| 03 | Logging | 结构化日志 |
| 04 | Error Handling | 统一错误处理 |
| 05 | Unit Test | 单元测试 |
| 06 | Integration Test | 集成测试 |
| 07 | Benchmark | 性能基准测试 |
| 08 | Docker | 容器化 |
| 09 | Docker Compose | 多服务编排 |
阶段产出:Project 01 / 02 具备测试和 Docker 部署能力。
Phase 08 — Deployment
目标:将应用部署到 Linux 服务器并对外提供服务。
| 序号 | 知识点 | 说明 |
|---|---|---|
| 01 | Linux | 基础命令、文件系统 |
| 02 | SSH | 远程连接 |
| 03 | Process | 进程管理 |
| 04 | Port | 端口与防火墙 |
| 05 | Nginx | 反向代理 |
| 06 | Reverse Proxy | 反向代理配置 |
| 07 | HTTPS | TLS 证书 |
| 08 | DNS | 域名解析 |
| 09 | CI/CD | 持续集成与部署 |
| 10 | Production Deployment | 生产环境部署 |
阶段产出:完成 Project 03 — Digital Twin Server 并上线。
项目与阶段对应关系
| 项目 | 开始阶段 | 完成阶段 |
|---|---|---|
| Project 01 — Go REST API | Phase 03 | Phase 04 |
| Project 02 — Real-time Server | Phase 05 | Phase 06 |
| Project 03 — Digital Twin Server | Phase 06 | Phase 08 |
刻意不包含的内容
以下主题不在当前路线范围内,待完成 Phase 08 后再考虑:
- Kubernetes
- 微服务架构
- Kafka / 消息队列
- Service Mesh / Istio
- CQRS / Event Sourcing
- 分布式事务
前端开发者的学习策略
- 不跳过的:pointer、interface、error、goroutine、channel——这些是 Go 与 JS 的本质差异
- 可加速的:HTTP、REST、JSON、CORS、WebSocket 客户端概念——快速过理论,重点写 Go 代码
- 需建立新认知的:SQL、PostgreSQL、Redis、Linux 部署——前端较少接触,按正常节奏学习
- 始终关联目标:每个知识点都思考如何服务于 Web3D / 数字孪生后端场景