应直接下载官方二进制包安装 Go,避免使用系统包管理器;推荐解压至 /usr/local/go 并配置 PATH;显式设置 GOPATH 和 GO111MODULE=on;VS Code 中禁用旧语言服务器,启用 gopls;开发时用 go run . 和 go test ./… -count=1;交叉编译需设 CGO_ENABLED=1。
直接下载二进制包安装 Go,别碰系统包管理器
Ubuntu/Debian 的 apt install golang 或 CentOS 的 yum install golang 安装的是长期支持但严重滞后的版本(比如 Ubuntu 22.04 默认是 Go 1.18),而 Go 1.21+ 已默认启用 GOROOT 自动推导、go install 支持模块路径、go test 并行控制更精细——这些在旧版里要么缺失,要么行为不一致。
正确做法是去 https://www.php.cn/link/81836b7cd16991abb7febfd7832927fd 下载最新稳定版 go1.xx.x.linux-amd64.tar.gz(ARM 机器选 arm64 后缀),然后:
-
解压到
/usr/local/go(推荐,避免权限问题):sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz - 把
/usr/local/go/bin加入$PATH:在~/.bashrc或~/.zshrc末尾加一行export PATH=$PATH:/usr/local/go/bin - 执行
source ~/.bashrc(或source ~/.zshrc),再运行go version验证
设置 GOPATH 和 Go Modules 要分清场景
GOPATH 在 Go 1.11+ 已不是必须项,但某些老工具(如 gocode、部分 IDE 插件)仍会读取它;而 GO111MODULE 才真正决定是否启用模块模式——这点常被混淆。
建议配置如下:
- 显式设置
GOPATH到用户目录下(比如~/go),避免默认落到$HOME/go后又被其他工具误删:export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin - 强制启用模块:
export GO111MODULE=on(即使不在$GOPATH下也能用go mod) - 如需兼容极少数依赖
GOPATH的脚本,可加export GOSUMDB=off(跳过校验,仅限内网离线环境)
注意:go get 在 module 模式下不再往 $GOPATH/src 放代码,而是缓存到 $GOCACHE(默认 $HOME/Library/Caches/go-build 或 $HOME/.cache/go-build),这点和旧教程完全不同。