go clean -cache 是最直接有效的清理方式,它清空 $GOCACHE(如 macOS 的 ~/Library/Caches/go-build),不依赖目录、不影响模块缓存 $GOPATH/pkg/mod 和源码,执行后首次构建稍慢,之后恢复,体积重置为 KB 级。

go clean -cache 是最直接有效的清理方式
GoLand 本身不管理构建缓存,它只是调用 go build、go test 等命令,而这些命令默认把编译中间产物写进 $GOCACHE(如 macOS 在 ~/Library/Caches/go-build,Windows 在 %LOCALAPPDATA%\go-build)。这个目录几天就能涨到 30GB+,尤其开 -race 或频繁改代码时。
运行以下命令即可清空:
go clean -cache
它不依赖当前目录,全局生效;不会动 $GOPATH/pkg/mod(模块缓存),也不影响源码和已安装的工具。
- 执行后首次构建会稍慢,之后恢复,缓存体积重置为 KB 级
- 如果你还用了模糊测试,顺手加一个:
go clean -fuzzcache - 别等磁盘报警才动手——定期跑比救火强得多
GoLand 自动构建功能是缓存膨胀的隐形推手
GoLand 默认开启 Build project automatically,每次保存就触发 go list、go build 检查,间接往 $GOCACHE 写一堆临时对象文件。这不是必须的,尤其你主要靠终端跑 go run 或 dlv debug 时。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 关闭路径:
Settings → Go → Build Tags & Vendoring → Build project automatically - 顺手关掉
Settings → Tools → File Watchers里所有与 Go 相关的 watcher - 检查
Settings → Go → Language Server是否启用了build.ignore配置项——它不能删缓存,但能避免对pkg/或bin/下文件做语义分析,降低误触发概率
GOCACHE 路径挪到非系统盘才是治本之策
默认 $GOCACHE 在 C 盘用户目录下,长期积累非常吃空间。改路径不是改 GoLand 设置,而是设环境变量——这是唯一有效且官方支持的方式。
- Windows 用户:在「系统属性 → 高级 → 环境变量」中新建用户变量
GOCACHE,值为D:\GOCACHE\go-build(需提前手动创建目录,确保可读写) - macOS/Linux:在 shell 配置文件中加
export GOCACHE="/path/to/your/cache",然后source生效 - 验证是否生效:
go env GOCACHE必须输出你设的新路径,否则白搭 - 改完后旧缓存还在原地,不自动迁移,也不被复用
别误删 $GOPATH/pkg/mod,那是模块缓存不是垃圾
有人看到 pkg/ 就想清,但要注意:$GOPATH/pkg/mod 是 Go Modules 的下载缓存,和 $GOCACHE 完全不同。它存的是已下载的模块源码,go mod download 会优先复用这里的内容。
- 误删会导致下次
go mod tidy或go build重新拉全部依赖,耗时耗带宽 - 真要清模块缓存,用
go clean -modcache,但它会清空整个GOMODCACHE目录,执行前务必确认go env GOMODCACHE已指向正确位置 - 如果只想腾点空间又不想全删,可以手动进旧缓存目录(如
%USERPROFILE%\go\pkg\mod),按需删掉不常用的模块子目录
缓存路径分散、类型混杂,最容易踩的坑就是把模块缓存当构建缓存一起删了——清之前先分清 $GOCACHE 和 $GOMODCACHE 各管什么,比盲目执行 go clean 更重要。

















