Go 1.21+ 无需配置 GOPATH,仅需安装二进制、正确设置 PATH(/usr/local/go/bin 或 C:\Go\bin)并执行 go mod init 初始化模块即可开发;GOROOT 通常无需手动设置,go env -w 配置 GOPROXY 和 GOBIN 才是关键。

Go 1.21+ 已无需配置 GOPATH,直接安装二进制、设好 PATH 就能写代码;老教程里那些 go get 配置代理、手动建 src/bin/pkg 目录的步骤,现在全过时了。
下载安装包后只改 PATH,别碰 GOROOT
macOS 或 Linux 下解压到 /usr/local/go(默认位置),Windows 解压到 C:\Go 即可。系统会自动识别——你不需要手动设置 GOROOT 环境变量,go 命令自己知道在哪。唯一要加进 PATH 的是:/usr/local/go/bin(macOS/Linux)或 C:\Go\bin(Windows)。
验证方式:
go version输出类似
go version go1.22.3 darwin/arm64 即成功。
- 如果报错
command not found: go,说明PATH没生效,重启终端或运行source ~/.zshrc(macOS)/source ~/.bashrc(Linux) - 手动设了
GOROOT反而可能干扰多版本管理工具(如gvm或asdf),建议删掉
go mod init 是新建项目的起点,不是可选项
Go 1.11 起模块(module)就是默认工作模式。进空目录后第一件事就是:
go mod init example.com/hello。模块名不一定要是真实域名,但必须符合 Go 包命名规则(字母、数字、下划线,不能以数字开头)。
立即学习“go语言免费学习笔记(深入)”;
这步会生成 go.mod 文件,后续所有 go run、go build 都依赖它解析依赖和版本。
- 如果跳过
go mod init直接go run main.go,Go 会尝试在$GOPATH/src下找包——但你根本没设GOPATH,结果就是no required module provides package - 模块名写成
hello看似简单,但会导致本地 import 冲突(比如你写import "hello/utils",Go 会去公网找hello模块),务必带域名风格前缀
国内用 go 命令拉依赖失败?优先换 GOBIN 和代理,别动 GO111MODULE
GO111MODULE 在 Go 1.16+ 已默认为 on,不用再设。真正影响下载的是代理和校验机制。
推荐组合配置(一行搞定):
go env -w GOPROXY=https://proxy.golang.org,direct改成国内镜像更稳:
go env -w GOPROXY=https://goproxy.cn,direct
- 如果还卡在
verifying github.com/xxx@v0.x.x,加一句:go env -w GOSUMDB=off
(仅开发机,生产环境慎用) -
GOBIN控制go install生成的二进制放哪,默认是$GOPATH/bin,但你没设GOPATH,所以建议显式指定:go env -w GOBIN=$HOME/go/bin
,再把$HOME/go/bin加进PATH - 别用
export GOPROXY=...临时设置,go env -w才是持久生效的正确姿势
模块初始化、代理配置、PATH 路径这三处最容易反复折腾。尤其是刚从其他语言转来的开发者,习惯性想“配好环境再写代码”,其实 go mod init 后敲两行 main.go 就能 go run 成功——Go 的“环境”比你想的薄得多,厚的是模块依赖树,不是安装步骤。


















