go 1.21+ 环境安装后运行 go version 成功即代表核心环境就绪;go mod init 是唯一必须的手动初始化动作;go build 默认静态编译且跨平台,只要禁用 cgo(linux 需显式设 cgo_enabled=0),生成的二进制便无外部依赖、可直接运行。

Go 环境不用“配置完再验证”,而是安装即用;静态编译不是额外步骤,而是 go build 默认行为——只要不引入 cgo,生成的二进制就天然无依赖、跨平台可运行。
go version 能跑通,环境就算搭好了
别被“GOROOT、GOPATH、GO111MODULE”绕晕。2026 年主流 Go 版本(1.21+)在绝大多数系统上安装后,go version 能输出版本号,就代表核心环境已就绪。
-
GOROOT通常自动设好(比如/usr/local/go),除非你手动改过安装路径,否则不用碰 -
GO111MODULE=on已是默认值,无需go env -w强行设置 -
GOPATH对 Modules 项目基本无影响,新建项目时甚至可以完全忽略它 - 国内用户只需加一行代理:运行
go env -w GOPROXY=https://goproxy.cn,direct,避免go get卡死
go mod init 是唯一必须的手动初始化动作
新建项目目录后,第一件事不是写 main.go,而是执行 go mod init example.com/hello。这会生成 go.mod 文件,告诉 Go:“这是一个模块,所有依赖从此处管理”。没有这步,go run . 可能报错 no required module provides package。
- 模块名(如
example.com/hello)只是逻辑标识,不需真实存在,也不影响编译结果 - 如果只是临时跑个单文件,直接
go run main.go也行,但一旦涉及 import 第三方包(比如github.com/gin-gonic/gin),就必须有go.mod -
go mod tidy应该在每次增删 import 后运行,它会自动补全依赖并写入go.sum,不手动维护
go build 默认就是静态编译,但要注意 cgo
执行 go build 得到的二进制文件,默认就是静态链接、无外部依赖的。你可以把它复制到一台全新安装的 Linux 机器上直接运行,不需要装 Go、不需要 libc 兼容层——前提是没启用 cgo。
- cgo 在 macOS 和 Windows 上默认关闭,在 Linux 上默认开启;一旦开启,
net、os/user等包会动态链接系统库 - 强制禁用 cgo:编译前设置
CGO_ENABLED=0,例如CGO_ENABLED=0 go build -o server - 检查是否含 cgo 依赖:运行
ldd server(Linux),如果输出里有libc.so就说明没禁干净 - 跨平台编译更简单:
GOOS=linux GOARCH=arm64 go build,同样默认静态,无需额外 flag
真正容易被忽略的点是:很多人以为“静态编译”需要一堆参数或工具链配置,其实 Go 的设计就是让这件事隐形——只要你没显式打开 cgo,go build 出来的就是开箱即用的二进制。问题往往出在误用了依赖(比如某些封装了 C 库的包),而不是 Go 本身。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











