GoLand 不生成构建产物,真正占用磁盘的是 Go 工具链的 $GOCACHE 和 $GOMODCACHE;误删 IDE 配置或 $GOPATH/pkg/mod 会导致依赖重下、补全失效甚至项目打不开,必须分清缓存归属再操作。

GoLand 本身不生成构建产物,真正吃磁盘的是 Go 工具链的 $GOCACHE 和 $GOMODCACHE,误删 IDE 配置目录或 $GOPATH/pkg/mod 可能导致依赖重下、补全失效甚至项目打不开——必须分清缓存归属再动手。
go clean -cache 清的是什么、为什么清完空间没立刻释放
go clean -cache 删除的是 $GOCACHE 下所有已编译的中间文件(.a 归档),默认路径在 macOS 是 ~/Library/Caches/go-build,Windows 是 %LOCALAPPDATA%\go-build,Linux 是 $XDG_CACHE_HOME/go-build。它不影响模块源码、go.mod 或 IDE 设置。
- 常见错误现象:执行后
df -h看 C 盘/主分区空间没变 —— 很可能因为后台有go test或 IDE 调用的构建进程仍持有这些文件句柄,Linux/macOS 下需等进程退出才真正释放空间 - 验证是否生效:运行
go env GOCACHE确认路径,再du -sh $(go env GOCACHE)查实际大小;如果返回 “No such file”,说明已清空 - 想彻底清:用
rm -rf $(go env GOCACHE)/*(注意末尾/*),比go clean -cache更暴力,但更确定 - 清完首次
go build会明显变慢,这是正常表现,不是命令失败
go clean -modcache 该不该用、什么时候必须用
go clean -modcache 清的是 $GOMODCACHE(通常为 $GOPATH/pkg/mod),即所有已下载解压的模块源码、.zip 包和校验数据。它不碰 go.mod、go.sum 或 vendor/。
- 必须用的场景:
go list -m all显示版本与go.mod不符;遇到invalid version: unknown revision且确认远程 tag 存在;磁盘里$GOMODCACHE占用超 10GB 但项目依赖不到 50 个模块 - 别在 CI 或发布前临时跑:它会强制重新下载全部依赖,耗时不可控;建议只在本地磁盘告急或怀疑缓存损坏时使用
- 只想删某个模块?手动删更安全:
rm -rf $GOMODCACHE/github.com/xxx@v1.2.3和$GOMODCACHE/cache/download/github.com/xxx - 清理后务必跑一次
go mod verify,确保后续拉取的模块和go.sum一致
GoLand 自身缓存和配置残留怎么清才不翻车
GoLand 的 UI 设置、插件缓存、索引文件存在用户目录下,不清理会导致重装后旧配置复活、SDK 路径错乱、项目识别失败。但这些和 Go 构建缓存无关,不能混着删。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 先关掉 GoLand,再逐条执行(macOS 示例):
rm -rf ~/Library/Application\ Support/JetBrains/GoLand*rm -rf ~/Library/Caches/JetBrains/GoLand*rm -rf ~/Library/Logs/JetBrains/GoLand*rm -rf ~/Library/Preferences/JetBrains/GoLand* - Windows 用户对应路径是:
%APPDATA%\JetBrains\GoLand*、%LOCALAPPDATA%\JetBrains\GoLand*、%APPDATA%\Roaming\JetBrains\GoLand* - 别碰
%USERPROFILE%\go\pkg\mod或%USERPROFILE%\go\pkg—— 这些是 Go 工具链的,不是 GoLand 的;误删$GOPATH/pkg/mod会导致下次go run疯狂重下依赖 - 检查 shell 配置文件(
~/.zshrc、~/.bash_profile)是否残留export GOPATH=...,有就删掉,避免干扰新环境
长期节省空间的关键动作不是“清”,而是“控”
靠定期 go clean 治标不治本。真正减少缓存膨胀,得从源头控制写入行为。
- 在 GoLand 中关闭
Build project automatically(Settings → Go → Build Tags & Vendoring),它每次保存都触发go list和隐式构建,持续往$GOCACHE写 - CI 或调试机可禁用构建缓存:
GOCACHE=off go build,或永久设置:go env -w GOCACHE=off(代价是每次构建都变慢) - 把模块缓存迁出 C 盘:设置
GOMODCACHE=D:\GoCache\mod(Windows)或GOMODCACHE=/mnt/data/go/pkg/mod(Linux/macOS),并提前创建目录、赋予权限;旧缓存不会自动迁移,需手动go clean -modcache后再拉 - 交叉编译最占空间,无多平台需求时避免随意切
GOOS/GOARCH;go clean -cache不区分平台,删的是全部架构缓存
最常被忽略的一点:GoLand 从不管理 $GOCACHE 或 $GOMODCACHE,它只是调用 go 命令的外壳。所以任何“在 GoLand 设置里改缓存路径”的操作都是无效的,唯一有效的是通过环境变量控制 Go 工具链本身。










