go clean -cache 清 $GOCACHE 中的编译中间产物(如 .a、.o 文件),go clean -modcache 清 $GOMODCACHE 中下载的模块快照,二者路径与内容完全独立,互不影响。

go clean -cache 和 go clean -modcache 到底清什么
go clean -cache 清的是 Go 编译中间产物,比如 .a 文件、.o 对象、模糊测试数据等,路径由 $GOCACHE 决定;go clean -modcache 清的是下载的模块快照(github.com/gofiber/fiber/v2@v2.45.0 这类),路径由 $GOMODCACHE 决定。两者互不干扰,删错一个不会影响另一个。
常见错误现象:
- 执行
go clean -modcache后,go run main.go又慢又卡——说明你没设好GOMODCACHE,它还在往 C 盘拉; - 删完
go clean -cache,GoLand 里 “Build project automatically” 一保存就又涨回几 GB——因为 IDE 默认开着自动构建,每次保存都在默默写缓存。
GoLand 终端里改环境变量为什么无效
在 GoLand 自带 Terminal 里用 export GOMODCACHE=/path/to/mod 或 $env:GOMODCACHE="D:\GoCache\mod" 是临时生效的,只对当前终端会话起作用。GoLand 底层调用 go mod download 或启动 gopls 时,用的是它自己 fork 的子进程环境,不继承你手动 export 的变量。
必须改系统级或用户级环境变量:
- macOS/Linux:写入
~/.zshrc或~/.bash_profile,然后source; - Windows 用户级:控制面板 → 系统 → 高级系统设置 → 环境变量 → 新建用户变量
GOMODCACHE; - 验证是否生效:重启 GoLand 后,在 Terminal 里运行
go env GOMODCACHE,输出必须是你设的路径,否则白忙活。
清理缓存时怎么保留常用模块不重下
go clean -modcache 是全量删除,不能选择性保留。如果你只想留 golang.org/x/sys、github.com/mattn/go-sqlite3 这类高频模块,别用这个命令。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
更稳妥的做法是手动迁移:
- 先确认新
GOMODCACHE已生效(go env GOMODCACHE输出 D 盘路径); - 进旧缓存目录(如
%USERPROFILE%\go\pkg\mod或~/go/pkg/mod),把想保留的模块子目录(如golang.org、github.com下对应文件夹)复制到新路径对应位置; - 注意权限:确保当前用户对新目录有完全读写权,且路径不含空格、中文或特殊符号;
- 首次
go mod download仍会校验 checksum,但命中本地已有模块后会跳过下载。
GoLand 自动构建关不关?关了会影响哪些功能
关掉 Build project automatically 不影响代码补全、跳转、重构这些核心能力,因为它们依赖 gopls 语言服务器,而 gopls 本身不依赖构建产物。
但它确实会让以下行为变“懒”:
- 语法错误实时标红延迟(从秒级变成保存后触发一次检查);
- 单元测试窗口不会自动刷新结果,需手动点 ▶️;
- 某些插件(如 GoConvey)可能收不到构建事件,导致 UI 不更新。
如果你主要靠终端跑 go test、dlv debug,或者项目模块多、构建慢,关掉它反而更清爽。关键是:关之前先确认 Settings → Go → Language Server → Build Tags 里没漏配 test 或自定义 tag,否则 gopls 可能误判代码有效性。










