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(微服务)
相关推荐
Chester_199939 分钟前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
2601_962055972 小时前
跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围
spring boot·后端·tomcat
EXI-小洲2 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
会周易的程序员2 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导2 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan2 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
m0_695251493 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
Lost of 程序猿3 小时前
ASP.NET Core API 幂等性设计深度实战:从一次重复申领事故说起
后端·asp.net
大衛說4 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
QQ_21696290964 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端