必须清理go mod缓存,否则换源后仍拉取旧地址;需执行go clean -modcache清$GOPATH/pkg/mod、rm -rf $GOCACHE清构建缓存、并用go env -w设置GOPROXY和GO111MODULE,最后通过go get验证goproxy.cn是否生效。

GoLand 换源后必须清理 go mod 缓存,否则仍会拉取旧地址
GoLand 本身不缓存模块下载地址,真正卡住的是 Go 工具链本地的 module cache 和 proxy 配置残留。换源(比如从官方 https://proxy.golang.org 切到国内镜像 https://goproxy.cn)后,go mod download 或自动补全仍可能报 Get "https://proxy.golang.org/...": dial tcp: i/o timeout ——这不是 Goland 的问题,是 go 进程还在用旧缓存里的 zip 包元信息,或本地 index 里存了过期的 checksum。
确认并重置 Go 代理配置(GO111MODULE + GOPROXY)
别只改 Goland 设置界面里的 “Go Modules” 代理项,那只是 IDE 的提示行为,不生效于终端或构建过程。
- 在终端执行
go env -w GOPROXY=https://goproxy.cn,direct(注意逗号后是direct,不是https://goproxy.cn后再加其他) - 检查是否启用了模块:运行
go env GO111MODULE,输出应为on;若为auto或空,建议显式设为go env -w GO111MODULE=on - Goland 中 Settings → Go → Go Modules → Proxy server 填写同上 URL,但仅作辅助提示,不替代命令行设置
清理三处关键缓存:pkg、cache、sumdb
只删 $GOPATH/pkg/mod 不够,checksum 验证失败、vendor 冲突、go list -m all 显示旧版本都可能源于以下任一位置残留:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
-
go clean -modcache:清空$GOPATH/pkg/mod下所有已下载模块及cache/download中的原始 zip/tar.gz -
rm -rf $GOCACHE:默认是$HOME/Library/Caches/go-build(macOS)或$HOME/AppData/Local/go-build(Windows),影响编译产物复用,换源后旧 build cache 可能引用错误符号路径 -
go env -w GOSUMDB=off或go env -w GOSUMDB=sum.golang.org:国内镜像通常不托管 sumdb,设为off可跳过校验(开发阶段可接受),否则go get会尝试连sum.golang.org超时
验证是否真正生效
清理完别急着写代码,先用最小闭环验证:
- 新建空目录,
go mod init test go get github.com/gin-gonic/gin@v1.12.0- 观察终端输出中是否出现
goproxy.cn字样(如Fetching https://goproxy.cn/github.com/gin-gonic/gin/@v/v1.12.0.info) - 再执行
go list -m all | head -3,确认模块版本和来源无异常
如果还走原代理或报 404,大概率是 GOPROXY 没全局写入,或 shell 配置文件(如 ~/.zshrc)里有旧的 export GOPROXY=... 覆盖了 go env -w 设置。

















