真正有效的清理命令只有go clean -modcache和go clean -cache,它们分别安全清空$GOMODCACHE(模块缓存)和$GOCACHE(构建中间产物),而删除GoLand的JetBrains缓存目录(如~/Library/Caches/JetBrains/GoLand*)仅影响IDE索引,不释放Go相关磁盘空间。

GoLand 本身不管理 Go 缓存,清理它不会释放 Go 构建或模块缓存占的空间;你真正要清的是 go clean -cache 和 go clean -modcache,而不是 GoLand 的 JetBrains 缓存目录。
为什么删了 GoLand 缓存目录,磁盘空间没明显变化
GoLand 的 ~/Library/Caches/JetBrains/GoLand*(macOS)或 %LOCALAPPDATA%\JetBrains\GoLand*(Windows)只存 IDE 自身的 UI 状态、索引快照、插件临时文件等,通常几百 MB 到 1–2 GB。而 Go 构建产物和模块缓存动辄 10–30 GB,它们完全由 Go 工具链控制,跟 GoLand 的缓存目录无关。
- 误删
~/Library/Caches/JetBrains/GoLand*只会让 IDE 重做一次项目索引,不影响构建速度或依赖行为 - 真正吃空间的是
$GOCACHE(默认~/Library/Caches/go-build)和$GOMODCACHE(默认~/go/pkg/mod) - 执行
go env GOCACHE和go env GOMODCACHE才能确认你该清哪——别猜路径
清 $GOCACHE:用 go clean -cache,不是 rm -rf
go clean -cache 是安全清空 Go 构建中间产物(.a 文件)的唯一推荐方式。它删的是编译缓存,不影响源码、模块下载或 go install 生成的二进制。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 命令全局生效,无需进入项目目录;执行后首次
go build会稍慢,之后恢复 - 如果
go clean -cache后空间没立刻释放,可能是 Linux 下文件被后台go进程占用,需等进程退出或重启终端 - 别手动
rm -rf $(go env GOCACHE)——go clean -cache会处理锁文件和残留元数据,rm -rf可能导致下次构建卡住 - 频繁切换
CGO_ENABLED、GOOS/GOARCH或升级 Go 版本后,必须清,否则可能静默链接失败
清 $GOMODCACHE:用 go clean -modcache,但得先确认 GO111MODULE=on
go clean -modcache 删除所有已下载的模块源码、.zip 包和校验信息,路径由 GOMODCACHE 环境变量决定(不是 GOPATH)。它不碰 go.mod、go.sum 或 vendor/。
- 执行前务必运行
go env GO111MODULE,输出必须是on,否则命令静默无效 - 清理后首次
go build会重新下载全部依赖,可加-v观察拉取地址是否符合预期(比如走私有代理) - 若只想删某个模块(如
github.com/sirupsen/logrus@v1.9.3),手动删更稳妥:rm -rf $(go env GOMODCACHE)/github.com/sirupsen/logrus@v1.9.3 - 别顺手
rm -rf $GOPATH/pkg—— 它可能含 vendor 构建产物或锁文件,删了会导致go run反复重下依赖
长期节省空间:改环境变量,而不是等爆满再清
靠定期 go clean 是治标。真正省 C 盘/系统盘空间,得把缓存路径挪到大容量盘,并关掉不必要的缓存生成。
- 设置
GOMODCACHE=D:\GoCache\mod(Windows)或GOMODCACHE=/mnt/data/go-modcache(Linux/macOS),然后go env -w GOMODCACHE=...并重启终端和 GoLand - 同理,设
GOCACHE和GOBIN到非系统盘,三者一起挪走效果最明显 - 在 GoLand 中关闭
Settings → Go → Build project automatically,避免每次保存都触发构建并写缓存 - CI 或调试机可临时禁用:
GOCACHE=off go build,但日常开发不建议永久关,构建延迟太明显
最常被忽略的一点:改完 GOMODCACHE 后,旧缓存还在原地占空间,go clean -modcache 只清新路径;想腾出旧空间,得手动删原 $GOPATH/pkg/mod 目录,且必须确保此时 go env GOMODCACHE 已指向新路径,否则会误删刚迁过去的缓存。

















