Go安装需勾选“Add Go to PATH”,并手动设置GOROOT、GOPATH、GOBIN环境变量;验证用go version、echo %GOROOT%等命令;国内用户需配置GOPROXY=https://goproxy.cn,direct;PowerShell需单独刷新PATH。

确认 Go 安装包是否真正完成安装
很多人点完 go1.x-windows-amd64.msi 的“下一步”就以为装好了,但实际可能只装了二进制文件,没配环境变量,导致 cmd 里敲 go version 报“不是内部或外部命令”。
安装时务必勾选 “Add Go to PATH”(MSI 安装器默认勾选,但某些精简版或手动解压版不会自动处理)。
验证方式:打开全新 cmd 窗口,执行:
go version
如果提示“无法识别”,说明 PATH 没生效,需要手动补。
手动添加 GOROOT 和 GOPATH 到系统环境变量
即使 MSI 安装成功,GOROOT 和 GOBIN 也可能未设,影响 go install 或第三方工具链(如 gopls)行为。尤其当你用非默认路径解压安装(比如 C:\dev\go),必须显式设置:
– GOROOT:指向 Go 安装根目录(如 C:\Program Files\Go 或你解压的路径)
– GOPATH:建议设为用户目录下的子路径(如 C:\Users\YourName\go),避免权限问题
– GOBIN(可选):设为 %GOPATH%\bin,方便统一管理可执行文件
设置后重启所有终端,再运行:
立即学习“go语言免费学习笔记(深入)”;
echo %GOROOT% echo %GOPATH%
确保输出路径存在且可读写。注意:Go 1.16+ 默认启用 GO111MODULE=on,GOPATH 对模块项目影响变小,但 go install 命令仍依赖 GOBIN 路径。
验证 go mod 和 go run 是否正常工作
不少人在 CMD 里能跑 go version,但一建模块项目就卡在 go mod init 或 go run main.go 报网络错误、代理失败、或找不到 go.exe —— 这往往不是环境变量问题,而是 GOPROXY 或本地缓存干扰。
常见现象:
go: github.com/xxx: Get "https://proxy.golang.org/...": dial tcp: lookup proxy.golang.org: no such hostgo: downloading ...: module zip: not a zip archive
临时解决(国内用户):
go env -w GOPROXY=https://goproxy.cn,direct go env -w GO111MODULE=on
然后新建一个空目录,测试:
go mod init hello
echo "package main\nimport \"fmt\"\nfunc main(){fmt.Println(\"ok\")}" > main.go
go run main.go
若输出 ok,说明命令行链路已通。注意:不要在 %GOROOT% 或 %GOPATH%\src 下直接建项目,容易触发旧 GOPATH 模式冲突。
PowerShell 中 go 命令失效的典型原因
Windows 用户切到 PowerShell 后发现 go 找不到,大概率是因为 PowerShell 不继承修改后的系统 PATH(尤其是通过“系统属性→环境变量”设置后,PowerShell 可能缓存旧值)。
检查方式:
$env:PATH -split ';' | Select-String go
如果没结果,需手动刷新或重启 PowerShell。更稳妥做法是:在 PowerShell 中运行一次:
[Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";C:\Program Files\Go\bin", "User")
或者直接在 PowerShell 配置文件($PROFILE)中追加:
$env:PATH += ";C:\Program Files\Go\bin"
注意:PowerShell 默认策略禁止执行脚本,首次编辑 $PROFILE 前需先运行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser。
别忽略终端类型差异——CMD、PowerShell、Git Bash 各自维护独立的环境变量视图,改完系统变量后,每个终端都得新开一个窗口才生效。










