goland 的“清理缓存”不清理 go 模块缓存,真正有效的是手动运行 go clean -modcache(清 $gomodcache)和 go clean -cache(清 $gocache),且需确保 go111module=on,清理后应补 go mod download -v 和 go mod verify。

GoLand 里“清理缓存”按钮不清理 Go 模块缓存
GoLand 自带的 File → Invalidate Caches and Restart… 只清 IDE 自身索引、语法高亮缓存和 gopls 的内存状态,go.mod 解析错误、checksum mismatch、unknown revision 这类问题完全不受影响。它根本不会碰 $GOMODCACHE(即 $GOPATH/pkg/mod)或 $GOCACHE。你点了“清理缓存”再重启,报错照旧,是因为 Go 工具链压根没被重置。
真正该执行的命令只有 go clean -modcache 和 go clean -cache
这两个命令必须手动在终端里运行,不能靠 IDE 点击替代:
-
go clean -modcache:删掉所有已下载的模块源码、.zip包和校验文件(路径由go env GOMODCACHE决定) -
go clean -cache:删掉构建中间对象($GOCACHE),比如~/Library/Caches/go-build(macOS)或%LOCALAPPDATA%\go-build(Windows) - 如果用了模糊测试,顺手加
go clean -fuzzcache
注意:go clean -modcache 前必须确认 GO111MODULE=on,否则静默无效;go clean -cache 不需要进项目目录,全局生效。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
清理后不立刻重下依赖?那是你漏了关键步骤
清理完直接开 GoLand 构建,大概率卡在 “downloading” 或报 missing —— 因为 GoLand 默认不会自动触发 go mod download。你得手动补上:
- 在项目根目录下运行
go mod download -v,观察每行开头的Fecthing是否指向你预期的代理(比如https://goproxy.cn) - 再跑一次
go mod verify,确保所有模块哈希与go.sum匹配 - 如果
go list -m all仍显示旧路径或(incompatible),说明replace没生效或go.sum里残留了旧哈希,此时要删掉对应模块的go.sum行再go mod tidy
Goland 设置里这几个开关不关,缓存会越积越多
即使你定期清理,只要这些设置开着,GoLand 就会在后台持续往 $GOCACHE 写东西:
- 关掉 Build project automatically:Settings → Go → Build Tags & Vendoring
- 关掉所有 Go 相关 File Watchers:Settings → Tools → File Watchers
-
避免对
pkg/和bin/做语义分析:Settings → Go → Language Server →build.ignore加上**/pkg/**和**/bin/**
真正容易被忽略的是:清理后首次 go build 显示的模块路径(Fecthing 行)才是真实拉取来源,不是 go env GOPROXY 输出值——后者可能被 direct 截断,而实际走的是 fallback 路径。










