WSL中安装Go应直接使用官方二进制包解压至/usr/local,配置GOROOT=/usr/local/go和PATH,再验证版本与环境;避免混用GOPATH与GOROOT,现代Go默认启用module模式。
WSL 中安装 Go 不需要额外兼容层,直接用官方二进制包最稳妥——既避开包管理器(如 apt)提供的老旧版本,也避免源码编译带来的依赖和权限问题。
/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 能快速暴露环境是否就绪。
mkdir ~/hello && cd ~/hello
go mod init hello
main.go:package mainimport "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 等命令可能静默失败或加载错误标准库。