Go 语言工具链
go 是 Go 的官方工具链入口,负责模块管理、构建、测试、运行和安装。现代 Go 项目以 go.mod 为中心,不再依赖 GOPATH 组织源码。
go version
go mod init example.com/app
go mod tidy
go build -o app ./cmd/app
go run ./cmd/app
go test ./...
go test -race ./...
go vet ./...
go env GOPATH GOMODCACHE GOPROXY
go install golang.org/x/tools/gopls@latest
go work init ./svc-a ./svc-b
# 交叉编译
GOOS=linux GOARCH=amd64 go build -o app-linux ./cmd/app
go run 每次都会编译到临时目录,生产部署用 go build 产出二进制。go.sum 要提交;只提交 go.mod 会让依赖校验缺失。GOPRIVATE/GONOSUMDB,否则会走公共校验服务。GOPROXY 设置不当会导致拉取失败;国内环境常用镜像,但要注意校验和。CGO_ENABLED=0 才能得到完全静态的二进制;依赖 cgo 的库需要交叉编译工具链。go test 有缓存;要强制重跑用 -count=1。go.work)适合多模块联调,但不应误提交到发布仓库。go build ./... 不产出一个统一二进制。gofmt — 格式化代码govulncheck — 漏洞扫描git — 版本控制