7.3. Go 命令速查表
See also
延伸阅读:Debug Build 的两种哲学:C++ 宏 vs Go 链接器注入 <https://www.fanyamin.com/journal/2026-02-03-debug_build_cpp_vs_go.html>_ — -ldflags -X 与 Build Tags 详解。
7.3.1. 基本命令
# 运行
go run main.go
go run .
# 编译
go build
go build -o myapp
go build -ldflags "-X main.Version=1.0.0"
# 安装
go install
# 获取依赖
go get github.com/pkg/errors
go get -u github.com/pkg/errors # 更新
# 清理
go clean
go clean -cache # 清理构建缓存
go clean -testcache # 清理测试缓存
7.3.2. 模块管理
# 初始化模块
go mod init github.com/user/project
# 整理依赖
go mod tidy
# 下载依赖
go mod download
# 验证依赖
go mod verify
# 查看依赖
go list -m all
go list -m -versions github.com/pkg/errors
# 依赖图
go mod graph
# 编辑 go.mod
go mod edit -require github.com/pkg/errors@v0.9.1
go mod edit -replace old=new
7.3.3. 测试
# 运行测试
go test
go test ./... # 所有包
go test -v # 详细输出
go test -run TestName # 运行特定测试
go test -count=1 # 禁用缓存
# 覆盖率
go test -cover
go test -coverprofile=coverage.out
go tool cover -html=coverage.out
# 基准测试
go test -bench=.
go test -bench=. -benchmem
go test -bench=. -benchtime=5s
go test -bench=. -count=5
# 竞态检测
go test -race
7.3.4. 性能分析
# CPU 分析
go test -cpuprofile=cpu.prof -bench=.
go tool pprof cpu.prof
# 内存分析
go test -memprofile=mem.prof -bench=.
go tool pprof mem.prof
# HTTP pprof
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30
go tool pprof http://localhost:6060/debug/pprof/heap
# pprof 交互
(pprof) top
(pprof) web
(pprof) list funcName
# trace
go test -trace=trace.out
go tool trace trace.out
7.3.5. 代码质量
# 格式化
go fmt ./...
gofmt -w .
# 静态检查
go vet ./...
# 文档
go doc fmt
go doc fmt.Println
# 生成
go generate ./...
7.3.6. 交叉编译
# Linux
GOOS=linux GOARCH=amd64 go build
# Windows
GOOS=windows GOARCH=amd64 go build
# macOS ARM
GOOS=darwin GOARCH=arm64 go build
# 查看支持的平台
go tool dist list
7.3.7. 环境变量
# 查看环境
go env
go env GOPATH
go env GOPROXY
# 设置环境
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GO111MODULE=on
# 常用变量
GOPATH # 工作空间
GOROOT # Go 安装目录
GOPROXY # 代理
GONOPROXY # 不使用代理
GOPRIVATE # 私有模块
GOFLAGS # 默认标志
7.3.8. 常用工具
# 安装工具
go install golang.org/x/tools/cmd/goimports@latest
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
go install go.uber.org/mock/mockgen@latest
# goimports
goimports -w .
# golangci-lint
golangci-lint run
# mockgen
mockgen -source=interface.go -destination=mock.go
7.3.9. 调试
# 安装 delve
go install github.com/go-delve/delve/cmd/dlv@latest
# 调试
dlv debug
dlv debug -- arg1 arg2
dlv test
dlv attach <pid>
# delve 命令
(dlv) break main.main
(dlv) continue
(dlv) next
(dlv) step
(dlv) print varName
(dlv) goroutines