用包管理器安装Go更省事但版本可能滞后,需手动安装特定版本;go mod init不可跳过,GOPROXY国内必须配置,验证环境需完整测试而非仅go version。

用包管理器安装比手动解压更省事
大多数 Linux 发行版自带的包管理器能直接装好 go,不用下载、解压、配 GOROOT,连 PATH 都自动加好了。但要注意版本可能滞后——比如 Ubuntu 24.04 默认装的是 go1.22,而当前稳定版已是 go1.23。
- Ubuntu/Debian:运行
sudo apt update && sudo apt install golang-go,装完go version就能用 - CentOS/RHEL 8+:用
sudo dnf install golang(yum在新版里已弃用) - Arch Linux:
sudo pacman -S go,通常带最新稳定版
如果你明确需要特定版本(比如 go1.23.4),或者发行版仓库太旧,那就得手动下载 .tar.gz 包解压到 /usr/local,再手动设 GOROOT 和 PATH —— 这步绕不开。
go mod init 不依赖 GOPATH,但别跳过它
从 go1.11 起,go mod 是默认模式,项目可以放在任意路径,不需要进 $GOPATH/src。但很多人误以为“不设 GOPATH 就不用管模块”,结果跑 go run 报错:no Go files in current directory 或依赖拉不下来。
- 初始化项目必须先执行
go mod init example.com/myapp(模块名建议用域名格式,避免冲突) - 没这步,
go不会自动生成go.mod,也不会把当前目录当模块根,import本地包会失败 -
GOPATH现在只是历史遗留变量,不设也行;但若你用了go install安装命令行工具,它默认输出到$GOPATH/bin,所以仍建议设export PATH=$PATH:$GOPATH/bin
国内必须配 GOPROXY,否则 go get 卡死
默认代理 https://proxy.golang.org 在国内基本不可达,go mod download 或 go get 会超时或 403。这不是网络问题,是 GFW 对 Google 域名的拦截策略导致的。
立即学习“go语言免费学习笔记(深入)”;
- 推荐设成
go env -w GOPROXY=https://goproxy.cn,direct(direct表示私有模块走直连) - 腾讯镜像
https://mirrors.cloud.tencent.com/go/也可用,但偶尔同步延迟,goproxy.cn更稳定 - 如果公司内网有私有模块仓库,需额外加
GOPRIVATE=git.internal.company.com,否则会被代理劫持
验证环境别只跑 go version
go version 只说明二进制存在,不代表整个工具链可用。常见漏检问题:go run 失败、go fmt 找不到、go test 报 cannot find package "testing"。
- 真正轻量验证只需三步:
mkdir hello && cd hello→go mod init hello→echo 'package main\nimport "fmt"\nfunc main(){fmt.Println("ok")}' > main.go→go run main.go - 如果输出
ok,说明编译器、标准库、模块系统全通 - 如果卡在
downloading,大概率是GOPROXY没生效;如果报command not found: gofmt,说明PATH没包含$GOROOT/bin
最易被忽略的是 go env -w GOPROXY 的写法——少个空格或写成 go env -w GOPROXY="https://..."(带引号)在某些 shell 下会静默失败,建议执行后立刻 go env GOPROXY 确认输出是否匹配预期。


















