← [ BACK_TO_NOTES ]

使用 Scoop 安装并配置 Go 环境

在 Windows 上用 Scoop 安装 Go、配置模块代理,并验证 go version / go env / 第一个模块可运行。

#howto #evergreen #dev #go

[!info] related notes

使用 Scoop 安装并配置 Go 环境

这个场景为什么出现

Windows 上装 Go 可以走官方 MSI,也可以用包管理器。若你已在用 Scoop,一条命令即可安装/升级,并与 PATH 管理一致。装完后仍需验证工具链,并(在国内网络下)配置模块代理。

[!abstract] 一句话理解 Scoop 负责安装 go 二进制;go env 负责模块代理与工作区变量;最终以 go version + 最小 module 的 go run 验收。

目标

完成后应满足:

  1. where.exe go / Get-Command go -All 显示的优先入口属于 Scoop,且 GOROOT 对应预期工具链
  2. go version / go env GOROOT GOPATH GOPROXY 正常
  3. 能 go mod init 并 go run 最小 package main
  4. (可选)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 版本。

边界与注意

  1. Scoop 装的 Go 与 MSI 并存时,PATH 以谁为准要看 where.exe go。
  2. 公司网络可能需要不同 GOPROXY/GOSUMDB。
  3. CGO_ENABLED 与 C 工具链是另一条线,见 go-cgo。
  4. 版本支持策略见 Go download 与发布说明。

常见误区

[!warning] 只装不验证
必须 go version 与 go run。

[!warning] 代理写成唯一源且不可达
,direct 只处理 404/410 回退,不是任何网络错误的兜底;先确认失败原因和可接受的模块来源。

[!warning] PATH 里多个 go
Scoop 与 MSI 并存时,用 where.exe go 确认优先级。

可验证实验

  1. 对比 scoop list go、scoop prefix go、where.exe go 与 go env GOROOT;Scoop shim 路径不同于真实安装目录。GOTOOLCHAIN=auto 可按项目要求选择或下载另一工具链,go version 不一定等于 Scoop 安装的基础版本。
  2. 在新临时目录依次执行上面的 go mod init、写入 main.go、go run .;只有 go.mod 没有源文件时会失败。分行命令也适用于不支持 && 的 Windows PowerShell 5.1。
  3. 改 GOPROXY 后执行 go env GOPROXY 确认写入。
  4. 可选工具应在实际 GOBIN 或 GOPATH 第一项的 bin 中存在,并能由当前终端解析;不要只检查固定的用户目录。

与通用安装笔记的关系

跨平台概念与第一个程序结构见 install-go-and-run-first-program;本篇专注 Scoop + Windows 实操。

本节总结

  • Scoop 负责安装与升级 go
  • go env 负责代理与路径
  • 验收以 go version + 最小 module 的 go run 为准
  • 与 MSI 并存时先查 PATH

自测题

  1. 如何确认当前 shell 用的是 Scoop 的 go?
  2. GOPROXY 的作用?
  3. 为什么装完还要跑一个最小 go run?
答案
  1. where.exe go 与 go env GOROOT。
  2. 解析/下载模块的代理列表。
  3. 只验证二进制在 PATH 不够,还要验证 module 构建与运行闭环。

延伸阅读

创建于 2025/12/24 更新于 2026/10/7
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本