卸载 Go 必须按安装来源执行对应卸载命令并清理环境变量、模块缓存和 IDE/shell 缓存:先用 which go 和 go env GOROOT 确认路径,再用包管理器(brew/apt/dnf)或手动方式卸载,接着删除 ~/.bashrc 等中的 GOROOT/GOPATH 设置,最后清空 $GOPATH/pkg/mod 并重启终端验证。

确认 Go 安装来源和实际路径
直接删 /usr/local/go 或 C:\Go 很可能留一堆后遗症——新装的 Go 仍会读到旧 GOROOT、旧模块缓存,甚至调用残留的 go 二进制。先搞清你当初怎么装的:
- 运行
which go看可执行文件在哪(比如/opt/homebrew/bin/go或/usr/local/go/bin/go) - 运行
go env GOROOT看当前生效的根目录(它可能和which go的上级目录不一致) - 运行
rpm -qa | grep -i golang(CentOS/RHEL)、dpkg -l | grep golang(Debian/Ubuntu)、brew list go(macOS Homebrew)或choco list go(Windows Chocolatey)确认安装方式
按来源执行对应卸载命令
不同安装方式必须用对应卸载逻辑,混用等于埋雷:
- Homebrew(macOS):必须先
brew uninstall go,再删掉~/.goenv(如果用了goenv) - apt(Ubuntu/Debian):用
sudo apt remove --purge golang-go,别只用apt remove - dnf/yum(CentOS/RHEL):
sudo dnf remove golang或sudo yum remove $(rpm -qa | grep -i ^golang) - 手动解压安装(官网 tar.gz):删目录(如
sudo rm -rf /usr/local/go),但必须同步处理环境变量和软链接(如sudo rm -f /usr/bin/go) - Windows MSI 安装包:走「控制面板 → 程序和功能」卸载,别只删
C:\Go文件夹
清理环境变量与 shell 初始化脚本
就算二进制删干净了,只要 $GOROOT 还指向旧路径,新 Go 就会误读配置、缓存、构建输出位置:
初始化并管理阿里云SDK Go 客户端,涵盖 sync.Once 单例、goroutine 安全、endpoint 与 region 配置、VPC 端点及调试。
- 搜索所有 shell 配置文件:
~/.bashrc、~/.zshrc、~/.profile、/etc/profile、/etc/paths.d/go(macOS 包安装特有) - 删掉含
GOROOT=、GOPATH=、export PATH=.*go的行 - 改完后彻底重启终端,或运行
source ~/.zshrc(注意:tmux、VS Code 终端可能缓存旧环境,需重启整个窗口) - 验证:
unset GOROOT GOPATH后再跑go env,确认GOROOT为空或自动推导,GOPATH是默认$HOME/go
删除模块缓存与构建产物
Go 1.11+ 默认启用模块模式,$GOPATH/pkg/mod 下的依赖缓存不会随 Go 卸载自动清除。残留 cache 会导致 go build 拉错依赖、校验失败、go list -m all 输出混乱:
立即学习“go语言免费学习笔记(深入)”;
- 运行
rm -rf $(go env GOPATH)/pkg/mod(注意:这会清空所有已下载依赖) - 运行
go clean -cache -modcache -i清理构建缓存和已安装二进制 - 检查
go env GOSUMDB,重装后建议恢复为默认sum.golang.org,否则go get可能静默跳过校验
最常被忽略的是 IDE 缓存和 shell 环境复用——VS Code、JetBrains、tmux、iTerm2 都可能固化旧 PATH 和 GOROOT,光改配置文件不重启进程是白忙活。重装前务必确认 which go 返回空,且新装版本的 go env 不含任何旧路径痕迹。

















