先确认go命令未识别是因PATH未生效,而非未安装;需检查安装路径(如/usr/local/go/bin)是否写入~/.zshrc并执行source,或Windows中确认%GOROOT%\bin已加入系统PATH。

go version 报 command not found 怎么办
根本不是没装 Go,而是终端根本找不到 go 命令——PATH 没生效。别急着重装,先确认安装路径和 shell 配置是否对得上。
- macOS / Linux:运行
which go,没输出就说明 PATH 里没加;检查安装路径(比如/usr/local/go/bin或/usr/local/opt/go/libexec/bin)是否写进了~/.zshrc或~/.bash_profile - Windows:用 PowerShell 运行
Get-Command go,失败就去「系统属性 → 高级 → 环境变量」里查%GOROOT%\bin是否在 PATH 中(注意不是 GOROOT 路径本身) - 改完配置必须重启终端,或手动执行
source ~/.zshrc;安装器勾选的“添加到 PATH”经常不生效,别信它
go mod init 失败但没报错,怎么回事
静默失败最常见于模块模式被关掉、或当前目录卡在 $GOPATH/src 里——Go 会强行按旧 GOPATH 规则推导 module 名,结果出错又不提示。
- 先运行
go env -w GO111MODULE=on强制启用模块模式(Go 1.16+ 默认开,但某些 CI 或老脚本可能关着) - 删掉项目根目录下的
vendor/目录(除非你明确要 vendor 依赖) - 检查当前路径是否在
$GOPATH/src下:如果是,go mod init会试图生成类似github.com/xxx/yyy的 module 名,极易冲突;建议直接切到任意非$GOPATH路径新建项目
VS Code 里 gopls 启动失败,缺什么
gopls 不是插件装完就跑,它依赖 go 命令可用、项目有 go.mod、且文件后缀是 .go。三者缺一,它就起不来。
Go 配置库,使用 spf13/viper — 分层优先级(flag > env >file > KV > default),提供 BindPFlag/BindPFlags、SetEnvPrefix + SetEnvKeyReplace 等功能。
- 终端里能跑
go version和go list -m(在项目根目录),gopls才可能启动成功 - 确保项目根目录下有
go.mod(用go mod init xxx生成),空项目或没初始化的目录,gopls会拒绝服务 - 文件名必须是
main.go或其他.go后缀;如果误存成main或main.txt,编辑器识别不了 Go 文件类型,gopls就不会加载
国内拉包超时、go get 卡住,怎么破
默认代理 proxy.golang.org 在国内基本不可用,不配代理,go mod tidy 或 go get 就会卡死或报 timeout。
立即学习“go语言免费学习笔记(深入)”;
- 执行
go env -w GOPROXY=https://goproxy.cn,direct(推荐)或https://mirrors.aliyun.com/goproxy/ -
direct是关键:代理找不到包时自动回源官方地址,避免私有模块拉不到 - 顺手加上
go env -w GOSUMDB=off(开发阶段可关校验,避免因 checksum 失败中断)
go.mod 是否真实存在、以及 GOPROXY 是否真正写入了环境变量(用 go env | grep GOPROXY 确认)。这三个点卡住,其他配置再漂亮也白搭。

















