Go 1.16+ 默认启用 Modules,装完只需重启终端验证 go version,再在项目根目录执行 go mod init 初始化模块并配置 GOPROXY,即可运行 go run main.go。

装完就能跑,不用调环境变量、不用碰 GOPATH、不用猜模块要不要初始化——Go 1.16+ 默认启用 Go Modules,只要 go version 能输出版本号,go run main.go 就能直接执行。
go version 报错或找不到命令?检查安装后是否重启终端
Windows 上用 .msi 安装包会自动写入系统 PATH,但 CMD/PowerShell 必须**全新打开**才生效;旧窗口里执行 go version 仍会提示“不是内部或外部命令”。Mac/Linux 手动解压安装时,如果没把 $GOROOT/bin 加进 shell 的 PATH,也会报同样错误。
- 验证方式:在新终端中运行
where go(Windows)或which go(Mac/Linux),有输出路径才算成功 - 常见误操作:安装完立刻在已打开的 VS Code 终端里测试,结果失败——关掉终端再重开
- 别手动改
GOPATH:Go 1.16 起默认开启 Modules 模式,GOPATH仅影响老项目,新项目完全不依赖它
go run main.go 提示 “no required module provides package main”?漏了 go mod init
这是 Go Modules 启用后的标准报错,不是权限或路径问题,而是当前目录没声明模块身份。Go 不允许在无模块上下文里运行 main 包。
- 解决方法:进入项目目录后,先执行
go mod init your-module-name(模块名建议用域名格式,如example.com/hello,纯本地开发用hello也行) - 执行后会生成
go.mod文件,内容类似:module hello+go 1.25 - 之后再
go run main.go就能跑通;不初始化就直接编译,go build同样报这个错 - 注意:模块名不能含空格、大写字母、下划线;推荐全小写加短横线,比如
my-first-go-app
go build 生成的可执行文件在哪?默认放在当前目录
go build 不加参数时,会在当前目录生成一个与目录名同名的可执行文件(Windows 是 .exe 后缀,其他系统无后缀),而不是像某些语言默认输出到 bin/ 目录。
立即学习“go语言免费学习笔记(深入)”;
- 想指定输出位置:用
-o参数,例如go build -o ./out/app main.go - 编译多个文件时,必须显式列出所有
main包文件,或直接go build .(点代表当前目录) - 如果项目里有非
main包的 .go 文件(比如工具函数),go build .会忽略它们,只编译main包入口 - Windows 下生成的
app.exe双击可能闪退——因为控制台程序需要保持窗口,加一行fmt.Scanln()或用go run测试更方便
国内拉包超时、go get 失败?必须配 GOPROXY
Go 默认从 proxy.golang.org 拉依赖,国内直连基本超时,go get 或 go mod download 会卡住或报 timeout 错误。
- 永久生效配置(推荐):
go env -w GOPROXY=https://goproxy.cn,direct - 验证是否生效:
go env GOPROXY应输出https://goproxy.cn,direct -
direct的作用是兜底:当代理找不到包时,自动回源官方地址,避免私有模块无法拉取 - 别用
https://goproxy.io:该域名已停服,2025 年起返回 404 - 如果公司内网有私有代理,优先配企业级镜像,而非公开代理
真正卡住人的从来不是语法,而是第一行 go run 跑不起来——模块初始化、代理配置、终端重启,这三件事漏掉任意一个,都会让新手在起步阶段反复怀疑自己是不是装错了。


















