引入
写完代码要编译、要检查、要格式化。Go 自带一整套工具链,从构建运行到静态分析、文档生成,不用额外装东西,命令行全搞定。
正文
定义
定义
Go 工具链是 Go 自带的一系列命令行工具,涵盖编译(
go build)、运行(go run)、静态分析(go vet)、格式化(go fmt)、文档(go doc)等功能,是日常开发的核心工具集。
语法
go build ./...
go run main.go
go vet ./...
go fmt ./...
go doc fmt.Println例子
go build
# 编译当前包
go build
# 编译指定包
go build ./cmd/server
# 交叉编译(Linux amd64)
GOOS=linux GOARCH=amd64 go build -o server main.gogo build 把 Go 源码编译成可执行文件,支持交叉编译到其他平台。
go run
# 直接运行
go run main.go
# 运行带参数
go run main.go --port 8080go run 编译并立即执行,不生成文件,适合开发和调试。
go vet
# 检查当前包
go vet
# 检查所有包
go vet ./...go vet 做静态分析,能发现常见错误:Printf 格式串和参数不匹配、不可达代码、拷贝锁等。
go fmt
# 格式化当前包
go fmt
# 格式化指定文件
go fmt main.gogo fmt 按 Go 官方规范自动格式化代码,缩进、对齐、空格全给你处理好。
go doc
# 查看包的文档
go doc fmt
# 查看具体函数
go doc fmt.Println
# 查看结构体
go doc net/http.Requestgo doc 从源码注释生成交互式文档,不用离开终端就能查 API。
常见写法
| 命令 | 说明 |
|---|---|
go build ./… | 编译所有包 |
go build -o name | 指定输出文件名 |
go run main.go | 编译并运行 |
go vet ./… | 静态分析所有包 |
go fmt ./… | 格式化所有包 |
go doc pkg.Func | 查看函数文档 |
go mod tidy | 整理依赖 |
go mod download | 下载依赖 |
go env | 查看环境变量 |
go version | 查看 Go 版本 |
特点
- 零配置:不需要 Makefile 或构建脚本,
go build直接用 go fmt统一代码风格,团队不再有格式争论go vet能在编译前发现常见 bug 模式go doc直接从源码注释提取文档,文档和代码同步- 支持交叉编译,一行命令构建多平台二进制
go mod tidy自动清理未使用的依赖,保持go.mod干净- 工具链全部随 Go 安装,无需额外依赖
理解
Go 工具链的设计哲学是”开箱即用”。编译、运行、检查、格式化、文档,一个 go 命令全包了。不用折腾构建系统配置,不用装插件,省下来的时间写代码多好。go vet 和 go fmt 更是写代码的好习惯,提交前跑一下能避免很多低级错误。
引出
工具链让日常开发顺畅,但写泛用代码时总得给每种类型重复写一遍?接下来看 Go 泛型,学习怎么用类型参数写出类型安全的通用代码。