go version报“command not found”说明path未包含go的bin目录,需确认安装路径(如/usr/local/go/bin)、编辑~/.zshrc或~/.bashrc添加export path=$path:/usr/local/go/bin、执行source生效并新开终端验证。

go version 命令报错:command not found
说明 go 命令没进系统 PATH,本质是 /usr/local/go/bin(或你实际安装路径下的 bin)没被 shell 读到。
常见错误现象:
- 终端直接执行
go version提示bash: go: command not found - 但
/usr/local/go/bin/go version能正常输出
实操建议:
- 确认 Go 安装路径是否正确:解压后
ls /usr/local/go/bin/应能看到go、gofmt等可执行文件 - 编辑
~/.bashrc或~/.zshrc(macOS Catalina 后默认 zsh),追加一行:export PATH=$PATH:/usr/local/go/bin - 别漏掉
source ~/.bashrc(或source ~/.zshrc)让配置生效 - 新开终端再试,避免在已启动的 shell 中反复 source —— 它不会刷新父进程的环境
go env -w 设置 GOPROXY 失败或不生效
国内拉取依赖超时、卡在 go mod download,多数是因为模块代理没设对,或设了但被其他配置覆盖。
实操建议:
- 优先用
go env -w GOPROXY=https://goproxy.cn,direct(2026 年仍稳定可用) - 不要混用
export GOPROXY=...和go env -w:后者写入的是 Go 的配置文件($GOPATH/go/env),优先级更高;前者只影响当前 shell - 验证是否生效:
go env GOPROXY应输出https://goproxy.cn,direct,不是https://proxy.golang.org或空 - 如果公司内网有私有代理,把
https://goproxy.cn换成对应地址,末尾保留,direct保证无法命中时回退到直连
GO111MODULE=on 必须开启,否则 go mod init 失败
Go 1.16+ 默认启用模块模式,但旧项目或未初始化的目录里,go build 仍可能走 GOPATH 旧路径,导致依赖找不到、go mod init 报 go: modules disabled by GO111MODULE=off。
实操建议:
- 执行
go env -w GO111MODULE=on—— 这是全局开关,比每次export GO111MODULE=on更可靠 - 检查当前目录是否有
go.mod文件:没有就先运行go mod init myproject(模块名建议用域名格式,如example.com/myproject) - 若已有
go.mod但go list -m all显示空白,说明模块未激活,删掉go.mod重来,确保GO111MODULE=on已生效
GOROOT 和 GOPATH 的分工容易混淆
GOROOT 是 Go 安装根目录(如 /usr/local/go),GOPATH 是你的工作区(如 $HOME/go)。从 Go 1.16 开始,go mod 已不强制依赖 GOPATH,但部分工具(如 go install 安装命令行工具)仍会往 $GOPATH/bin 写二进制。
实操建议:
-
GOROOT通常不用手动设:安装脚本会自动识别,go env GOROOT能看到值即可 -
GOPATH可设可不设;如需go install命令可用,就设export GOPATH=$HOME/go,并把$GOPATH/bin加进PATH - 新建项目不必放在
$GOPATH/src下:模块模式下,任意目录都能go mod init,src目录已无特殊意义
最简能跑通的三行配置(Linux/macOS):
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.zshrc echo 'export GOPATH=$HOME/go' >> ~/.zshrc echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.zshrc source ~/.zshrc
之后立刻执行 go env -w GO111MODULE=on GOPROXY=https://goproxy.cn,direct,再验证 go version 和 go mod init test 是否都成功——中间任何一步失败,都得回头查 PATH 或代理设置,而不是怪 Go 本身。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











