GoLand 的 GOPROXY 设置仅作用于内置终端,不影响外部终端、Run/Debug 配置及 CI;需同步配置 GONOPROXY 和 GONOSUMDB(通过 go env -w),且 GOPROXY 必须含 ,direct(无空格),推荐清华源+goproxy.cn,direct 组合。

GoLand 的 GOPROXY 设置只影响 IDE 内置终端
你在 Settings → Go → Go Modules → Environment 里填的 GOPROXY,只对 GoLand 底部 Terminal 启动的子 shell 生效。它不会覆盖系统级环境变量,也不会作用于:
• 外部终端(如 macOS 的 iTerm、Windows 的 PowerShell)
• GoLand 的 Run/Debug 配置(点 ▶️ 运行 main)
• CI 流水线或 shell 脚本里的 go build
验证方式:新开一个系统终端,执行 go env GOPROXY,输出很可能为空或仍是默认值 https://proxy.golang.org,direct
必须同时配 GOPROXY + GONOPROXY + GONOSUMDB
仅设 GOPROXY 会导致私有模块(如 git.internal.company.com/lib)被错误转发给代理,结果是 403 Forbidden、lookup failed 或 unknown revision。
• GONOPROXY 和 GONOSUMDB **只能通过 go env -w 或 shell 环境变量设置**,GoLand 界面里没有对应输入框
• 两者值必须完全一致,例如:go env -w GONOPROXY="git.internal.company.com,github.com/my-org"go env -w GONOSUMDB="git.internal.company.com,github.com/my-org"
• 不支持通配符:github.com/my-org/* 无效,得逐个列出具体域名或仓库路径
GOPROXY 值写错是下载失败最常见原因
国内用户直接填 https://goproxy.cn 很可能失败,因为缺少 fallback 机制。
• 正确写法必须带 ,direct,且逗号前后**不能有空格**:https://goproxy.cn,direct
• 推荐组合(容错更强):https://mirrors.tuna.tsinghua.edu.cn/goproxy/,https://goproxy.cn,direct
• 清华源必须带结尾斜杠,否则返回 404:https://mirrors.tuna.tsinghua.edu.cn/goproxy/
• direct 必须放在末尾——写成 direct,https://goproxy.cn 会先直连再代理,反而更慢甚至失败
• 注意:Go 对 404、503 等 HTTP 错误不触发 fallback,只有连接超时或拒绝才会试下一个地址
使用 uber-go/dig 在 Golang 中实现依赖注入——基于反射容器,提供 Provide/Invoke、dig.In/dig.Out 参数与结果对象,支持命名依赖等
验证代理是否真起作用,别信 go list -m all
go list -m all 可能从本地缓存读取,完全不发网络请求。
唯一可靠验证方式是:
• 执行 go mod download -x
• 观察日志中每一步的请求 URL 和响应状态码
• 如果看到类似 GET https://goproxy.cn/github.com/some/pkg/@v/v1.2.3.info 且返回 200,说明命中代理;如果出现 dial tcp: i/o timeout 后跳到下一个地址,说明 fallback 生效
• 私有模块应看到直连日志(如 GET https://git.internal.company.com/lib/@v/v0.1.0.info),而非发往代理地址
立即学习“go语言免费学习笔记(深入)”;

















