GoLand不提供一键清理构建缓存功能,需手动执行go clean -cache清理$GOCACHE编译中间产物、go clean -modcache清理$GOMODCACHE模块缓存,二者互不影响且安全幂等。

GoLand 本身不提供“一键清理构建缓存”的功能
它不会自动调用 go clean 类命令,也不会在菜单里塞个「清理所有缓存」按钮。所谓“清理构建缓存”,实际指的是清理 Go 工具链生成的两类东西:$GOCACHE(编译中间产物)和 $GOMODCACHE(模块源码与 zip 包),而 GoLand 只负责触发构建,不负责擦屁股。
真正该执行的命令只有 go clean -cache 和 go clean -modcache
这两个命令是 Go 官方提供的、安全且幂等的操作,对应不同缓存类型:
-
go clean -cache:清空$GOCACHE(默认 macOS 在~/Library/Caches/go-build,Linux 在$HOME/.cache/go-build,Windows 在%LOCALAPPDATA%\go-build),删的是.a文件等编译中间产物 -
go clean -modcache:清空$GOMODCACHE(默认为$GOPATH/pkg/mod),删的是下载的模块 zip、解压源码、校验文件(.info/.ziphash) - 两者互不影响:
go clean -cache不动模块,go clean -modcache不动编译产物 - 执行前建议先确认路径:
go env GOCACHE和go env GOMODCACHE,避免误判位置
别手动 rm -rf $GOPATH/pkg/mod 或 rm -rf $GOCACHE
直接删目录看似快,但容易踩坑:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 多个 GOPATH 或未设 GOPATH 时,
go env GOMODCACHE和实际路径可能不一致,删错目录 - GoLand 后台正用 gopls 分析代码,
gopls可能正在读$GOCACHE,强制删除会引发 I/O 错误或 IDE 卡顿 -
go clean -modcache是原子操作,会同步清理cache/download下的元数据;手动删只删了源码目录,残留.info文件可能导致下次go get拿到旧 hash - 删完
$GOMODCACHE后不跑go mod verify,无法确认后续拉取的模块是否和go.sum一致
清理后首次构建变慢是正常现象,不是失败
这不是 bug,是预期行为:
-
go clean -cache后,go build会重新编译所有依赖包,首次耗时增加属正常,之后恢复 -
go clean -modcache后,go build会按需重下模块,不是全部重拉——只拉go.mod里声明但本地缺失的版本 - 如果发现清理后构建卡在
Fetching或报checksum mismatch,说明私有代理配置(GOPROXY)、校验开关(GOSUMDB)或go.sum本身有问题,不是缓存没清干净 - CI 环境中建议加
go mod download -x显式预热,避免构建阶段网络抖动影响稳定性
清理动作本身很简单,难的是判断「该清哪一块」「为什么清了还不生效」。最常被忽略的是:缓存是否真的 stale(比如切换了 CGO_ENABLED 或 GOOS 后没清 $GOCACHE),以及模块校验是否被绕过(GOSUMDB=off 时 go clean -modcache 也救不了损坏的 zip)。










