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(微服务)
相关推荐
会编程的土豆1 小时前
洛谷题单入门1 顺序结构
数据结构·算法·golang
小小小米粒1 小时前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
前端一小卒1 小时前
我用 Claude Code 的 Superpowers 技能链写了个服务,部署前差点把服务器搞炸
前端·javascript·后端
czhc11400756632 小时前
C# 428 线程、异步
开发语言·c#
:1212 小时前
java基础
java·开发语言
SilentSamsara3 小时前
Python 环境搭建完整指南:从下载安装到运行第一个程序
开发语言·python
曹牧3 小时前
Spring:@RequestMapping注解,匹配的顺序与上下文无关
java·后端·spring
小短腿的代码世界3 小时前
Qt文件系统与IO深度解析:从QFile到异步文件操作
开发语言·qt
harder3214 小时前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
阿丰资源4 小时前
SpringBoot+Vue实战:打造企业级在线文档管理系统
vue.js·spring boot·后端