使用 Scoop 安装并配置 Go 环境
在 Windows 上用 Scoop 安装 Go、配置模块代理,并验证 go version / go env / 第一个模块可运行。
[!info] related notes
使用 Scoop 安装并配置 Go 环境
这个场景为什么出现
Windows 上装 Go 可以走官方 MSI,也可以用包管理器。若你已在用 Scoop,一条命令即可安装/升级,并与 PATH 管理一致。装完后仍需验证工具链,并(在国内网络下)配置模块代理。
[!abstract] 一句话理解 Scoop 负责安装
go二进制;go env负责模块代理与工作区变量;最终以go version+ 最小 module 的go run验收。
目标
完成后应满足:
- where.exe go / Get-Command go -All 显示的优先入口属于 Scoop,且 GOROOT 对应预期工具链
go version/go env GOROOT GOPATH GOPROXY正常- 能
go mod init并go run最小package main - (可选)gopls / staticcheck 安装到 GOBIN;未设置时为 GOPATH 第一项下的 bin
前置
- 已安装 Scoop
- 可访问外网或可用模块代理
步骤
1. 安装 Go
scoop install go
scoop prefix go
where.exe go
Get-Command go -All
go version
go env GOROOT GOTOOLCHAIN
升级:
scoop update go
2. 配置模块代理(按网络环境)
现代 Go 默认采用模块模式,一般无需持久设置 GO111MODULE=on。先查看现值;仅按实际网络需要覆盖 GOPROXY:
go env GOPROXY GOENV
# 以下 -w 会写入用户级 Go 配置,影响后续会话。
go env -w GOPROXY=https://proxy.golang.org,direct
国内常用示例(按你的可用性选择,非官方唯一要求):
go env -w GOPROXY=https://goproxy.cn,direct
查看:
go env GOROOT GOPATH GOBIN GOPROXY GOMODCACHE GOPRIVATE GOTOOLCHAIN
- GOPROXY 中逗号分隔仅在前一个代理返回 404/410 时回退,超时或 403 不会自动转 direct;竖线分隔可在任意错误时回退,但可能把私有模块路径泄露给后续源,应按信任边界配置。
- 私有模块用 GOPRIVATE(必要时再设 GONOPROXY/GONOSUMDB);不把全局关闭校验数据库当通用修复。
- shell 环境变量可能覆盖 go env -w 保存的值;go env -u GOPROXY 删除的是持久覆盖,不会清除当前 shell 的变量。
3. 验收:最小模块
mkdir hello-go
cd hello-go
go mod init example.com/hello
写入 main.go:
package main
import "fmt"
func main() {
fmt.Println("hello from scoop go")
}
go run .
4. 可选:安装常用工具
go install golang.org/x/tools/gopls@latest
go install honnef.co/go/tools/cmd/staticcheck@latest
用 go env GOBIN GOPATH 确认工具安装位置:GOBIN 非空时优先使用它,否则是 GOPATH 第一项下的 bin(Windows 的 GOPATH 可用分号包含多项)。将实际目录加入 PATH 后,在新终端用 Get-Command gopls -All 和 gopls version 验证。@latest 随时间变化,团队环境宜固定工具版本,并核对其最低 Go 版本。
边界与注意
- Scoop 装的 Go 与 MSI 并存时,PATH 以谁为准要看
where.exe go。 - 公司网络可能需要不同
GOPROXY/GOSUMDB。 CGO_ENABLED与 C 工具链是另一条线,见 go-cgo。- 版本支持策略见 Go download 与发布说明。
常见误区
[!warning] 只装不验证
必须go version与go run。
[!warning] 代理写成唯一源且不可达
,direct 只处理 404/410 回退,不是任何网络错误的兜底;先确认失败原因和可接受的模块来源。
[!warning] PATH 里多个 go
Scoop 与 MSI 并存时,用where.exe go确认优先级。
可验证实验
- 对比 scoop list go、scoop prefix go、where.exe go 与 go env GOROOT;Scoop shim 路径不同于真实安装目录。GOTOOLCHAIN=auto 可按项目要求选择或下载另一工具链,go version 不一定等于 Scoop 安装的基础版本。
- 在新临时目录依次执行上面的 go mod init、写入 main.go、go run .;只有 go.mod 没有源文件时会失败。分行命令也适用于不支持 && 的 Windows PowerShell 5.1。
- 改
GOPROXY后执行go env GOPROXY确认写入。 - 可选工具应在实际 GOBIN 或 GOPATH 第一项的 bin 中存在,并能由当前终端解析;不要只检查固定的用户目录。
与通用安装笔记的关系
跨平台概念与第一个程序结构见 install-go-and-run-first-program;本篇专注 Scoop + Windows 实操。
本节总结
- Scoop 负责安装与升级
go go env负责代理与路径- 验收以
go version+ 最小 module 的go run为准 - 与 MSI 并存时先查 PATH
自测题
- 如何确认当前 shell 用的是 Scoop 的 go?
GOPROXY的作用?- 为什么装完还要跑一个最小
go run?
答案
where.exe go与go env GOROOT。- 解析/下载模块的代理列表。
- 只验证二进制在 PATH 不够,还要验证 module 构建与运行闭环。
延伸阅读
- Install Go
- go command env
- Modules
- Scoop 文档:https://scoop.sh/
- Scoop Main 的 Go manifest:2026-10-07 核对其 bin 字段通过 shim 暴露 go.exe/gofmt.exe,安装脚本处理 GOPATH 第一项的 bin。
- Go 工具链选择