go clean -cache 是第一优先级操作,它清理 $GOCACHE 目录下编译中间产物(.a 文件),这些文件易 stale、占空间大(数 GB)、复用率高,但不删源码或模块;清理后首次构建稍慢,随后自动重建并回落至 KB 级,全局生效且安全。

GoLand 本身不管理 Go 缓存,它只是调用 go build、go test 等命令;项目变慢、磁盘爆满、改了代码不生效,90% 是 $GOCACHE 和 $GOPATH/pkg/mod 里堆的旧产物没清理,不是 IDE 的锅。
为什么 go clean -cache 是第一优先级操作
go clean -cache 清的是 $GOCACHE(默认 macOS 在 ~/Library/Caches/go-build,Linux 在 $XDG_CACHE_HOME/go-build 或 $HOME/.cache/go-build),里面全是编译中间文件(.a 归档),占空间快、复用率高、但极易 stale。频繁改代码 + go test -race 几天就能涨到 20GB+。
- 它不删源码、不碰模块、不影响
go mod download结果 - 执行后首次构建会稍慢,之后自动重建,体积回落到 KB 级
- 不需要进项目目录,全局生效;
go env GOCACHE可确认路径 - 别用
rm -rf $GOCACHE——go clean -cache更安全,会跳过被进程占用的文件,避免误删正在用的缓存
go clean -modcache 清的是什么,什么时候必须清
go clean -modcache 清的是 $GOPATH/pkg/mod 下所有已下载模块的源码、.zip 包和校验数据(包括 cache/download/ 里的 .info、.ziphash)。它不会动你项目里的 go.mod 或 go.sum,也不会删 vendor/。
- 触发清理的典型信号:
go list -m all显示的版本和go.mod对不上;invalid version: unknown revision且远程 tag 明明存在;checksum mismatch且你用了私有代理 - 清理后首次
go build会重下依赖,加-v可看实际拉取地址(Fetching github.com/xxx) - 别在 CI 发布前临时跑——耗时不可控;日常开发中不建议高频执行,除非确认缓存损坏或磁盘告急(>10GB)
GoLand 自身缓存和配置残留怎么一并清掉
IDE 启动卡、补全失效、项目识别失败,常因旧版配置残留。GoLand 不会自动清理自己的用户级缓存目录,必须手动删:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 配置:
rm -rf ~/Library/Application\ Support/JetBrains/GoLand*(macOS) - 缓存:
rm -rf ~/Library/Caches/JetBrains/GoLand* - 日志与偏好:
rm -rf ~/Library/Logs/JetBrains/GoLand*、rm -rf ~/Library/Preferences/JetBrains/GoLand* - 系统级状态:
rm -f ~/Library/Preferences/com.jetbrains.goland.plist、rm -rf ~/Library/Saved\ Application\ State/com.jetbrains.goland.savedState
注意:GoLand* 通配符能匹配所有版本(如 GoLand2025.1、GoLand2026.1.1),不用猜版本号。
哪些缓存绝对不能直接 rm -rf
手快删错目录是常见翻车点:
- 别碰
$GOPATH/pkg根目录 —— 它可能含 vendor 构建产物或锁文件,rm -rf $GOPATH/pkg会导致下次go run疯狂重下依赖 - 别删
$GOPATH/pkg/mod下的cache/download子目录以外的内容 —— 比如github.com/xxx@v1.2.3目录是解压后的源码,删了go build仍能用,但go mod verify会失败 - 别在未关 IDE 时清
$GOCACHE—— Linux 下被占用的文件rm后空间不释放,得等 GoLand 或后台dlv进程退出
最稳的节奏是:先关 GoLand → go clean -cache -modcache → 再删 JetBrains 缓存目录 → 重启 IDE。缓存路径以 go env 输出为准,别凭记忆硬写。










