WSL中安装Go推荐下载官方二进制包而非apt,需手动配置GOROOT=/usr/local/go、GOPATH=$HOME/go及PATH,并在VS Code中通过code .启动以加载shell环境。

WSL 中装 Go 完全可行,但直接用 apt install golang 安装的版本通常太旧(比如 Ubuntu 22.04 默认是 1.18),且 GOROOT 和 PATH 不会自动配好——你得自己动手。
下载官方二进制包并解压到 /usr/local
Ubuntu/Debian 的 apt 源里 Go 版本滞后严重,尤其当你需要 go 1.21+ 的泛型改进或 go work 功能时,必须手动装。推荐从 https://www.php.cn/link/81836b7cd16991abb7febfd7832927fd 下载最新 linux-amd64.tar.gz 包:
cd /tmp wget https://www.php.cn/link/81836b7cd16991abb7febfd7832927fdgo1.22.5.linux-amd64.tar.gz sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
这一步确保 /usr/local/go 是干净、可控的安装路径,避免和系统包管理器冲突。
配置 GOROOT 和 GOPATH 并写入 shell 初始化文件
WSL 默认用 bash 或 zsh,你需要把环境变量写进 ~/.bashrc 或 ~/.zshrc(看你的 shell):
立即学习“go语言免费学习笔记(深入)”;
echo 'export GOROOT=/usr/local/go' >> ~/.bashrc echo 'export PATH=$GOROOT/bin:$PATH' >> ~/.bashrc echo 'export GOPATH=$HOME/go' >> ~/.bashrc echo 'export PATH=$GOPATH/bin:$PATH' >> ~/.bashrc source ~/.bashrc
-
GOROOT必须显式设为/usr/local/go,否则go env可能误判为系统自带路径 -
GOPATH设成$HOME/go是约定俗成,别用~/go(波浪号在某些上下文中不展开) - 务必把
$GOROOT/bin放在PATH最前面,否则可能调到旧版go命令
验证安装并测试 module 初始化
运行以下命令确认基础环境就绪:
go version # 应输出 go version go1.22.5 linux/amd64
go env GOROOT GOPATH # 检查路径是否匹配你设的值
go mod init hello # 在空目录下执行,看是否生成 go.mod —— 这步失败常因 GOPATH 权限不对或磁盘空间不足如果 go mod 报错 cannot determine module path,大概率是当前目录不在 $GOPATH/src 下,但其实现在不用非得放那儿:Go 1.13+ 支持任意路径初始化 module,只要目录为空且没 go.mod 即可。
VS Code 连接 WSL 时 Go 扩展找不到 go 命令
这是最常被忽略的一环:VS Code 的 Remote-WSL 插件启动时,并不会自动读取你 shell 的 ~/.bashrc,所以 PATH 里没有 go。解决方法是让 VS Code 显式使用你的 shell 配置:
- 在 WSL 终端中运行
code .启动 VS Code(而非从 Windows 端点击图标) - 或者,在 VS Code 设置里搜
remote.WSL.defaultLinuxShell,设为/bin/bash;再检查go.goroot设置项是否为空——为空则自动探测,若填了错误路径就得清掉 - 重启 VS Code 窗口(不是仅重载窗口),再打开一个
.go文件,状态栏应显示 Go 版本号
没走通这一步,哪怕终端里 go 跑得飞起,VS Code 的代码补全、跳转、格式化全失效。










