依赖与模块管理
| 命令 |
作用 |
示例 |
go mod init |
初始化一个新模块(生成 go.mod) |
go mod init myapp |
go mod tidy |
自动添加缺失的依赖、删除未使用的依赖 |
go mod tidy |
go get |
为当前模块添加/升级/降级依赖 |
go get github.com/gin-gonic/gin@v1.9.0 |
go mod download |
预下载 go.mod 中声明的所有依赖到本地缓存 |
go mod download |
go mod vendor |
将依赖复制到 vendor 目录(离线构建用) |
go mod vendor |
go list |
列出包或模块信息 |
go list -m all(查看所有依赖版本) |
运行与安装
| 命令 |
作用 |
示例 |
go run |
编译并直接运行程序(适合调试) |
go run . |
go install |
编译并安装到 GOBIN 目录(全局可用) |
go install example.com/tool@latest |
代码质量与格式化
| 命令 |
作用 |
示例 |
go fmt |
自动格式化代码,符合官方风格 |
go fmt ./... |
go vet |
静态检查代码中潜在的错误 |
go vet ./... |
go fix |
自动把旧版 API 更新为新 API |
go fix ./... |
查看信息
| 命令 |
作用 |
示例 |
go doc |
查看包或函数的文档 |
go doc fmt.Println |
go env |
查看/修改 Go 环境配置 |
go env -w GOPROXY=https://goproxy.cn |
go version |
查看当前 Go 版本 |
go version |
go help |
查看某个命令的详细帮助 |
go help build |
其他进阶命令
| 命令 |
作用 |
说明 |
go clean |
清除缓存和编译产物 |
go clean -cache、go clean -modcache |
go generate |
运行源代码中的 //go:generate 指令自动生成代码 |
常用于生成代码模板 |
go tool |
调用 Go 自带工具 |
go tool pprof(性能分析)、go tool trace(协程跟踪) |
go work |
多模块工作区管理 |
go work init、go work use ./xxx |
go bug |
打开浏览器提交 bug 报告 |
会自动附带系统信息 |
交叉编译
基本用法
# Linux/macOS
GOOS=目标系统 GOARCH=目标架构 go build -o 输出文件名 源文件
# Windows (PowerShell)
$env:GOOS="目标系统"; $env:GOARCH="目标架构"; go build -o 输出文件名 源文件
# Windows (CMD)
set GOOS=目标系统 && set GOARCH=目标架构 && go build -o 输出文件名 源文件
查看所有支持的平台
go tool dist list
常用组合
| 目标平台 |
GOOS |
GOARCH |
| Linux 64位 |
linux |
amd64 |
| Linux ARM64 |
linux |
arm64 |
| Windows 64位 |
windows |
amd64 |
| macOS Intel |
darwin |
amd64 |
| macOS M1/M2 |
darwin |
arm64 |
示例
# Linux/Mac (Bash)
# 编译 Linux 64位
GOOS=linux GOARCH=amd64 go build -o app ./app/api/main.go
# 编译 Windows 64位
GOOS=windows GOARCH=amd64 go build -o app.exe ./app/api/main.go
# 编译 macOS ARM64 (M1/M2)
GOOS=darwin GOARCH=arm64 go build -o app ./app/api/main.go
# Windows (PowerShell)
# 编译 Linux 64位
$env:GOOS="linux"; $env:GOARCH="amd64"; go build -o app ./app/api/main.go
# 编译 Windows 64位
$env:GOOS="windows"; $env:GOARCH="amd64"; go build -o app.exe ./app/api/main.go
# 编译 macOS ARM64 (M1/M2)
$env:GOOS="darwin"; $env:GOARCH="arm64"; go build -o app ./app/api/main.go