推荐手动下载官方二进制包安装go:先清理旧安装(sudo rm -rf /usr/local/go /usr/bin/go*),再解压至/usr/local/go,用go env -w设置goroot和模块参数,最后通过go mod init和go run验证模块功能正常。

直接删掉旧的 /usr/local/go 和软链接
旧 Go 安装残留最常卡在 /usr/local/go 目录和 /usr/bin/go 这类软链接上。不清理干净,新版本解压后 go version 仍可能报错或显示旧版本。
执行这行命令即可清空核心安装点:
sudo rm -rf /usr/local/go /usr/bin/go /usr/bin/gofmt /usr/bin/godoc
注意:/usr/bin/go* 里所有 go 相关二进制(如 gofmt、godoc)都得一并删掉——它们是软链接,但指向旧 /usr/local/go/bin/ 下的文件,不删会干扰新环境。
go env -w 比改 .bashrc 更快重置环境变量
改 shell 配置文件要 source、要重启终端、还要处理不同 shell(.zshrc vs .bashrc),容易漏。Go 1.14+ 支持用 go env -w 直接写入用户级配置,优先级高于环境变量,且对所有 shell 生效。
重装前先运行:
go env -w GOROOT="" GOPATH="" GO111MODULE="on" GOPROXY="https://mirrors.aliyun.com/goproxy/,direct"
这样能确保后续 go 命令不读取残留的旧值。如果提示 go: not found,说明旧二进制已清完,正好进入下一步。
解压 + env -w 两步完成新安装(Linux/macOS)
不用手动编辑配置文件,不用反复 source,新版 Go 安装本质就是「解压 + 设环境」两件事。
- 下载并解压(以
go1.25.4.linux-amd64.tar.gz为例):curl -OL https://golang.google.cn/dl/go1.25.4.linux-amd64.tar.gz && sudo tar -C /usr/local -xzf go1.25.4.linux-amd64.tar.gz
- 立即生效新路径:
go env -w GOROOT=/usr/local/go
此时 go version 就能正确输出新版本。不需要把 $GOROOT/bin 加进 PATH ——只要 GOROOT 设置正确,go 命令本身就能定位到自己的子命令(如 gofmt)。
别跳过 go mod init 验证模块初始化是否正常
很多“安装成功”假象来自 go run hello.go 能跑,但一建新项目就卡在 go: cannot find main module。这是因为没启用模块模式,或 GOPROXY 不生效。
快速验证:
mkdir ~/tmp-go-test && cd ~/tmp-go-test && go mod init test && echo 'package main\nimport "fmt"\nfunc main(){fmt.Println("ok")}' > main.go && go run main.go
如果最后输出 ok,说明:GOROOT 正确、模块初始化可用、代理能拉包、go run 路径解析无误。缺任何一环都会在这里失败。
真正麻烦的不是安装步骤,而是旧环境残留导致的隐性冲突——比如 GOROOT 指向旧路径但 go 二进制却是新的,或者 GOPROXY 被 shell 环境变量覆盖而 go env 看不到。动手前先确认 which go 和 go env GOROOT 是否一致,比重装十次都管用。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











