goland 不自动清理 go 构建缓存,需手动运行 go clean -cache 清空 $gocache(默认 macos 在 ~/library/caches/go-build),该命令不影响模块缓存 $gopath/pkg/mod;建议关闭 goland “build project automatically” 以减少缓存生成,并定期清理 $gocache。

GoLand 里 target 和 go-build 缓存不自动清理
GoLand 本身不会主动清理构建产物,它只管调用 go build 或 go test,而这些命令默认把中间对象和缓存写进 $GOCACHE(如 ~/Library/Caches/go-build)和项目级的 target/(Rust 项目才用)、bin/、pkg/(Go 项目中由 GOPATH 管理)。Go 项目没有 target/ 目录,但会生成大量临时文件在 $GOCACHE 和 $GOPATH/pkg 中,尤其频繁改代码 + go test -race 时,$GOCACHE 几天就能涨到 30GB+。
手动清理 go-build 缓存最直接有效
别等磁盘报警再动手。运行以下命令即可清空 Go 构建缓存:
go clean -cache
这个命令会删掉 $GOCACHE 下所有内容,不影响源码和模块下载缓存($GOPATH/pkg/mod 是独立的)。如果还用了模糊测试,顺手加上:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
go clean -fuzzcache
-
go clean -cache不需要进项目目录,全局生效 - 执行后首次构建会稍慢,之后速度恢复,且缓存体积重置为 KB 级
- 如果你没设
GOCACHE,默认路径在~/Library/Caches/go-build(macOS)、%LOCALAPPDATA%\go-build(Windows)或$XDG_CACHE_HOME/go-build(Linux)
GoLand 设置里关掉“自动构建”能减少缓存生成频率
GoLand 默认开启 Build project automatically,每次保存就触发 go list、go build 检查,间接往 $GOCACHE 写东西。这不是必须的,尤其你主要靠终端跑 go run 或 dlv debug 时:
- 打开 Settings → Tools → File Watchers,关掉所有与 Go 相关的 watcher
- 关闭 Settings → Go → Build Tags & Vendoring → Build project automatically
- 检查 Settings → Go → Language Server 是否启用了
gopls的build.ignore配置项——它不能删缓存,但能避免对pkg/或bin/下文件做语义分析,降低误触发概率
别误删 $GOPATH/pkg/mod,否则下次 go mod download 很慢
有人看到 $GOPATH/pkg 占空间大,顺手 rm -rf $GOPATH/pkg,结果发现 go run main.go 开始疯狂下载依赖。因为:
-
$GOPATH/pkg/mod存的是已下载的模块(go mod download结果),删了就得重下 -
$GOPATH/pkg下还有编译好的 .a 包(归档文件),删了只是让下次go build多花几秒重新编译,但不如$GOCACHE影响大 - 真正该定期清理的是
$GOCACHE和$GOPATH/bin(放go install生成的工具,如gopls、gofumpt,旧版本可删)
缓存路径分散、作用不同,搞混了反而拖慢开发节奏。重点盯住 $GOCACHE,每月跑一次 go clean -cache,比手动删目录安全又省心。










