文章目录
- 一、建立正确认知
- 二、最佳学习路径
-
- [第 1 步:搞定基础语法](#第 1 步:搞定基础语法)
- [第 2 步:直接上 Web](#第 2 步:直接上 Web)
- [第 3 步:接数据库](#第 3 步:接数据库)
- [第 4 步:做一个完整小项目(关键)](#第 4 步:做一个完整小项目(关键))
- [第 5 步:加一个 CLI 工具](#第 5 步:加一个 CLI 工具)
- [第 6 步:理解 Go 的"灵魂"](#第 6 步:理解 Go 的“灵魂”)
- [第 7 步:工程化](#第 7 步:工程化)
- 三、常见坑
- 四、进阶路线
Go 上手快、生态成熟,而且特别适合有前端/工程经验的人,能很快做出"能跑的应用"。从今天开始,我们来一步步学习 Go 并进行实践。
一、建立正确认知
Go 是什么 & 不是什么?
Go 的核心特点:
- 简单(语法比 TS / Java / Rust 都少)
- 原生并发(goroutine + channel)
- 编译快、部署简单(一个二进制)
- 非常适合:后端 API / 工具 / 微服务 / CLI
二、最佳学习路径
按"快速开发应用"的目标设计:
第 1 步:搞定基础语法
只需要掌握这些:
- 基本类型 / struct
- 函数
- map / slice
- error 处理(Go 核心)
- interface(理解即可)
推荐资料:
- A Tour of Go(只做前半部分)
重点不是记语法,而是理解:
Go 的代码长这样:
go
func main() {
fmt.Println("hello world")
}
第 2 步:直接上 Web
别刷题,直接写 API。用:Gin 或 Kratos。
示例(一个接口):
go
r := gin.Default()
r.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "hello world",
})
})
r.Run()
启动:
go run main.go
浏览器访问:
http://localhost:8080/hello
到这里,已经完成:
"从 0 到一个后端服务"
第 3 步:接数据库
用 ORM:比如 GORM。
go
db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{})
type User struct {
ID int
Name string
}
db.Create(&User{Name: "Tom"})
结合 Docker:
可以直接起 MySQL:
docker run -d -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8
第 4 步:做一个完整小项目(关键)
做这个就够了:一个"用户管理系统 API"。
包含:
- 登录(JWT)
- 用户 CRUD
- 分页
- 简单权限
技术栈:
- Gin(Web)
- GORM(DB)
- JWT(认证)
第 5 步:加一个 CLI 工具
Go 非常适合写工具!推荐用 Cobra。
比如做:
- 一个 SQL 生成器(结合你现在做的编辑器)
- 一个 API mock 工具
- 一个日志分析工具
第 6 步:理解 Go 的"灵魂"
必须掌握:
goroutine(轻量线程)
go
go func() {
fmt.Println("run async")
}()
channel(通信)
go
ch := make(chan int)
go func() {
ch <- 1
}()
fmt.Println(<-ch)
这是 Go 和 Node 最大差异点。
第 7 步:工程化
学习:
- 项目结构(cmd / internal / pkg)
- 配置管理(viper)
- 日志(zap)
- 热更新(air)
三、常见坑
不要一开始
- 学太多语法
- 研究并发细节
- 纠结最佳实践
要做
- 直接写 API
- 一边写一边查
- 先跑起来再优化
四、进阶路线
可以再加:
- Docker + 部署
- gRPC(微服务)