HOW - Go 开发入门(一)

文章目录

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(微服务)
相关推荐
myloveasuka8 小时前
Java与C++多态访问成员变量/方法 对比
java·开发语言·c++
2301_821700539 小时前
C++编译期多态实现
开发语言·c++·算法
Andya_net9 小时前
Spring | @EventListener事件机制深度解析
java·后端·spring
奥地利落榜美术生灬9 小时前
c++ 锁相关(mutex 等)
开发语言·c++
xixihaha13249 小时前
C++与FPGA协同设计
开发语言·c++·算法
重庆小透明9 小时前
【java基础篇】详解BigDecimal
java·开发语言
ID_180079054739 小时前
模拟1688商品详情的Python API实现,返回符合风格的JSON数据
开发语言·python·json
小小怪7509 小时前
C++中的函数式编程
开发语言·c++·算法
金山几座9 小时前
C#学习记录-事件
开发语言·学习·c#