[基础]Go的官方命令体系
2026/1/9大约 3 分钟
[基础]Go的官方命令体系
Go 的子命令主要分 4 大阵营
Go 命令体系
├── ① go 主命令阵营
│ ├── 构建:build run install clean
│ ├── 测试:test bench cover
│ ├── 格式:fmt vet fix
│ └── 模块:go mod ...
│
├── ② go tool 阵营
│ ├── compile / link / asm / cgo
│ ├── pprof / trace / cover
│ ├── objdump / nm / addr2line
│ └── dist / vet 内核
│
├── ③ 独立工具(IDE / LSP 阵营)
│ ├── gofmt / gopls / godoc
│ └── goimports / staticcheck / golangci-lint / dlv
│
└── ④ go generate 阵营(代码生成工具)
├── stringer / mockgen / wire
├── protoc-gen-go / swag
└── ent / sqlc / 其他 codegen① go 主命令(核心命令阵营)
Go 官方维护、最常用,也是你平时 go build, go run 用的这一类。
主要负责:构建、运行、测试、依赖管理(go mod)、代码分析、格式化等。
核心命令:
1.1 构建 & 运行
| 命令 | 作用 |
go build | 构建生成可执行文件 |
go run | 编译并运行 |
go install | 安装可执行到 $GOBIN |
go clean | 清理缓存、构建产物 |
go env | 显示 Go 环境变量 |
go version | 显示版本 |
go doc | 查看文档 |
1.2 测试
| 命令 | 作用 |
go test | 跑测试 |
go test -bench | 跑 benchmark |
go test -cover | 跑覆盖率 |
1.3 静态检查 / 工具
| 命令 | 作用 |
go fmt | 格式化源码(调用 gofmt) |
go vet | 静态检查 |
go fix | 升级旧语法 |
1.4 模块(go mod 阵营)
go mod 本身也是 go 主命令的子命令家族,但通常单独称为 “go mod 阵营”。
| 子命令 | 说明 |
go mod init | 创建 go.mod |
go mod tidy | 清理依赖 |
go mod vendor | vendor 模式 |
go mod download | 下载依赖 |
go mod why | 为什么依赖某包 |
go mod graph | 依赖图 |
go mod edit | 修改 go.mod |
② go tool 阵营(底层/内部工具阵营)
这是 Go 官方提供的“底层工具集”,大部分就是构建过程中真正会被调用的东西。
你平时基本不会单独用,但 go build/go test 内部都调用它们。
常用工具:
| 工具 | 说明 |
go tool compile | 编译器 |
go tool link | 链接器 |
go tool asm | 汇编器 |
go tool cgo | cgo 工具 |
go tool dist | 安装 Go 自身用 |
go tool trace | 性能 trace |
go tool pprof | profile 分析器 |
go tool cover | 覆盖率工具 |
go tool objdump | 反汇编 |
go tool addr2line | 地址转源码行 |
go tool nm | 列符号表 |
go tool vet | vet 内核 |
这一类我们称为 “go tool 阵营”(低级别二进制工具)。
③ 独立工具阵营(GOTOOLCHAIN / Go 官方辅助工具)
这类工具虽然不是 go 子命令,但官方维护,经常跟 Go 一起使用:
| 工具 | 来源 | 用途 |
gofmt | 官方 | 代码格式化(go fmt 调用它) |
godoc | 官方 | 本地文档服务器 |
dlv | 外部(delve) | Go 调试器 |
gopls | 官方 | Go 语言服务器(VSCode / Goland 必装) |
goimports | 外部(gofmt 增强) | 自动加 import |
staticcheck | 外部 | 业界最强静态分析 |
golangci-lint | 外部 | 多 linter 集合 |
可以称为 Go 独立工具阵营(编辑器 / IDE 环境工具)。
④ go generate 阵营(代码生成工具生态)
虽然只有一个命令:
go generate
但实际背后是一整个生态,因为它会执行任意外部工具来生成代码!
常用的 generate 工具包括:
| 工具 | 用途 |
stringer | 枚举 → 字符串生成 |
mockgen(gomock) | mock 生成 |
protoc-gen-go | protobuf 生成 |
swag | swagger 文档生成 |
wire | Google 依赖注入 |
ent | ORM |
sqlc | SQL 生成代码 |
所以我们称它为 “代码生成阵营”。