WSL中安装Go应直接使用官方二进制包解压至/usr/local,配置GOROOT=/usr/local/go和PATH,再验证版本与环境;避免混用GOPATH与GOROOT,现代Go默认启用module模式。

WSL 中安装 Go 不需要额外兼容层,直接用官方二进制包最稳妥——既避开包管理器(如 apt)提供的老旧版本,也避免源码编译带来的依赖和权限问题。
下载并解压 Go 二进制包到 /usr/local
WSL 的 Linux 发行版(如 Ubuntu)默认不带 Go,但 /usr/local 是标准的第三方软件安装路径,且对所有用户可读、对 root 可写,适合放 Go 安装目录。
- 用
wget下载最新稳定版(例如 go1.22.5):wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
- 解压覆盖到
/usr/local:sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
- 确认结果:
ls /usr/local/go应看到bin/、src/等子目录
配置 GOROOT 和 PATH 到用户 Shell
不设 GOROOT 会导致 go env 显示空值,部分 IDE(如 VS Code 的 Go 扩展)或构建脚本会报错;而只改 PATH 不设 GOROOT 是常见疏漏。
- 编辑
~/.bashrc或~/.zshrc(取决于你用的 shell):echo 'export GOROOT=/usr/local/go' >> ~/.bashrc echo 'export PATH=$GOROOT/bin:$PATH' >> ~/.bashrc source ~/.bashrc
- 验证:
go version应输出类似go version go1.22.5 linux/amd64;go env GOROOT应返回/usr/local/go - 注意:不要把
GOROOT指向~/go或其他用户目录——那是GOBIN或GOPATH的位置,不是安装根目录
初始化 go mod 项目并测试跨平台编译能力
WSL 的 Go 默认支持交叉编译(如生成 Windows 可执行文件),但需注意 CGO 和系统库限制。首次运行 go mod init 能快速暴露环境是否就绪。
立即学习“go语言免费学习笔记(深入)”;
- 新建测试目录:
mkdir ~/hello && cd ~/hello
- 初始化模块:
go mod init hello
- 写一个简单
main.go:package main
import "fmt"
func main() { fmt.Println("Hello from WSL!") }
- 运行并尝试交叉编译:
go run main.go go build -o hello.exe -ldflags="-H windowsgui" . # 生成 Windows GUI 可执行文件
- 关键点:
go build生成的.exe文件在 WSL 中不可直接运行,但可复制到 Windows 目录(如/mnt/c/tmp)后在资源管理器双击启动
真正容易卡住的地方是 GOPATH 和 GOROOT 混用——现代 Go(1.16+)已默认启用 module 模式,GOPATH 仅用于存放 go install 的二进制工具(如 gopls),而 GOROOT 必须严格指向 /usr/local/go。一旦设错,go list、go test 等命令可能静默失败或加载错误标准库。










