根本原因是Homebrew安装后未将/opt/homebrew/bin(Apple Silicon)或/usr/local/bin(Intel)加入$PATH;需确认shell类型(echo $SHELL),编辑~/.zshrc或~/.bash_profile,添加对应PATH并source生效。

Mac上用Homebrew装Go为什么go version还是报command not found
根本原因是Homebrew安装后没把/opt/homebrew/bin(Apple Silicon)或/usr/local/bin(Intel)加进$PATH。哪怕brew install go成功,shell也找不到go命令。
- 先确认Go是否真装上了:
brew --prefix go,输出类似/opt/homebrew/Cellar/go/1.22.5就说明装好了 - 再查当前shell类型:
echo $SHELL,常见是/bin/zsh(默认)或/bin/bash - 编辑对应配置文件:
~/.zshrc(zsh)或~/.bash_profile(bash),追加一行:export PATH="/opt/homebrew/bin:$PATH"(M1/M2)或export PATH="/usr/local/bin:$PATH"(Intel) - 重载配置:
source ~/.zshrc,再跑go version就该有输出了
Windows用MSI安装包后go env GOPATH返回空值正常吗
正常。从Go 1.13起,默认启用GO111MODULE=on,且GOPATH只用于存放go install的可执行文件和老式go get的源码——你不用手动设它,也不该依赖它组织项目。
- 检查模块模式是否开启:
go env GO111MODULE,输出on才对 -
GOPATH为空不等于环境没搭好,只要go version和go list -m能跑就行 - 真正要关心的是
GOROOT(Go安装路径)和GOPROXY(国内务必设为https://goproxy.cn,否则go mod download大概率超时)
Linux下手动解压go.tar.gz后go run hello.go提示cannot find package "fmt"
这是GOROOT没设对。手动安装必须显式告诉Go自己在哪,否则它找不到标准库。
使用 uber-go/dig 在 Golang 中实现依赖注入——基于反射容器,提供 Provide/Invoke、dig.In/dig.Out 参数与结果对象,支持命名依赖等
- 解压后得到
go/目录,假设放在/usr/local/go,那就必须运行:export GOROOT=/usr/local/go - 同时把
$GOROOT/bin加入PATH:export PATH=$GOROOT/bin:$PATH - 这两行得写进
~/.bashrc或~/.profile,不然新开终端就失效 - 验证:
go env GOROOT输出应和你设的一致;ls $GOROOT/src/fmt应该能看到标准库源码
VS Code里go插件反复提示“Failed to install tools”
本质是插件试图用go install下载dlv、gopls等工具,但被代理、权限或模块路径卡住。
立即学习“go语言免费学习笔记(深入)”;
- 先关掉自动安装:在VS Code设置里搜
go.toolsManagement.autoUpdate,设为false - 手动装关键工具:
go install github.com/go-delve/dlv/cmd/dlv@latest、go install golang.org/x/tools/gopls@latest - 如果提示
no required module provides package,说明不在模块内——随便建个空目录,go mod init tmp再执行安装 - 装完检查位置:
go list -f '{{.BinDir}}' -m gopls,把输出路径加到VS Code的go.gopath设置里(虽然GOPATH已弱化,但插件仍会读这个)
go run都可能在最后一秒失败。

















