项目初始化与依赖管理 (Go Modules)
这是现代 Go 开发最常用的指令集。
| 指令 | 用途 | 备注 |
|---|---|---|
go mod init <name> | 初始化一个新的 Go 模块 | 生成 go.mod 文件 |
go mod tidy | 整理依赖 | 自动添加缺失的包,移除未引用的包(最常用,每次引入新库都会用) |
go mod download | 下载依赖包到本地缓存 | 通常 tidy 会自动处理 |
go mod vendor | 将依赖包缓存到项目下的 vendor 目录 | 某些企业内网环境需要 |
go mod graph | 打印模块依赖图 | 用于排查复杂的版本冲突 |
go get <path>@v1.x | 下载并添加特定版本的依赖 | 会更新 go.mod |
编写、编译与运行
这是代码循环(Code-Build-Run)的核心。
| 指令 | 用途 | 技巧 |
|---|---|---|
go run . | 直接运行当前目录下的代码 | 适合临时调试,不会产生二进制文件(本地开发联调) |
go build | 编译代码 | 默认生成与目录同名的可执行文件(最后容器化部署) |
go install | 编译并将结果安装到 $GOPATH/bin | 常用于安装全局工具 |
go fmt ./... | 格式化代码 | 强制统一代码风格(通常插件会自动执行) |
go vet ./... | 静态代码分析 | 检查代码中潜在的低级错误(如 Printf 参数不匹配) |
测试与性能分析 (Testing)
Go 自带了非常强大的测试工具链,无需第三方库。
go test ./...: 运行当前项目下所有的单元测试。go test -v: 打印详细的测试日志。go test -run <Regexp>: 只运行名称匹配正则表达式的测试函数。go test -bench=.: 运行压力测试 (Benchmark)。go test -cover: 查看测试代码覆盖率。go tool cover -html=c.out: 生成网页版的覆盖率报告,直观查看哪行代码没被测到。
调试与排查 (Toolbox)
当你需要深入探究底层逻辑或性能瓶颈时。
go env: 查看当前 Go 的环境变量(如GOPROXY,GOOS,GOARCH)。go env: 列出全部环境变量及其当前值go env <VAR>: 查看特定变量(如 go env GOPATH)。go env -w VAR=VALUE设置/修改变量(常用,-w 代表 Write)。go env -u VAR重置/恢复变量到默认值(-u 代表 Unset)。go env -json以 JSON 格式输出,方便脚本解析。
go version: 查看当前的 Go 版本。go doc <pkg>.<func>: 在终端快速查看某个函数的文档(例如go doc fmt.Println)。go tool pprof: 性能分析工具。配合代码生成的 CPU/Heap profile,可以定位内存泄漏或 CPU 耗时函数。go tool nm: 查看二进制文件里的符号表。
跨平台编译 (Cross-Compilation)
Go 最强大的特性之一就是简单的跨平台构建。你只需要在 go build 前设置环境变量即可。
- 编译为 Linux 可执行文件 (在 Mac/Windows 上):
1
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app_linux
- 编译为 Windows 可执行文件 (在 Mac/Linux 上):
1
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o app.exe
进阶辅助指令 (Generators)
go generate ./...: 扫描代码中的//go:generate注释并执行后面的命令。常用于自动生成代码(如stringer、protobuf、mockgen)。go clean -modcache: 清理下载的依赖包缓存(当依赖包损坏或想节省磁盘空间时使用)。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小五的个人杂货铺!
