go clean -cache 仅清除 $GOCACHE 目录下的编译中间对象(如 .a 文件、汇编临时文件),不清理模块缓存($GOPATH/pkg/mod)、vendor 或 go.mod 依赖,执行后首次构建会变慢但缓存体积显著缩小。

go clean -cache 能清掉哪些缓存?
go clean -cache 只删 $GOCACHE 目录下的全部内容,也就是编译中间对象(.a 文件、汇编临时文件等),不碰模块缓存、不删 $GOPATH/pkg/mod。常见错误是误以为它会清理 vendor 或 go.mod 依赖——不会。执行后首次构建会慢一点,因为所有 .a 都要重生成,但体积立刻从 GB 级回落到 KB 级。
GoLand 多项目共用同一 $GOCACHE 会导致冲突吗?
不会。Go 工具链对 $GOCACHE 是线程安全且路径隔离的:每个包的哈希值决定其缓存子目录,不同项目、不同 Go 版本、甚至不同 build tags 编译出的对象都落在不同路径下。真正容易出问题的是人为把 $GOCACHE 指向一个 NFS 共享目录或权限受限位置——这时可能因写入失败导致构建卡住或报 permission denied。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
为什么关掉 “Build project automatically” 后补全还变慢?
因为 GoLand 的语义分析(比如跳转定义、结构体字段提示)底层仍依赖 gopls,而 gopls 默认会扫描 pkg/ 和 bin/ 下的文件做索引。即使你关了自动构建,只要这些目录存在且含大量旧二进制,gopls 就会花时间解析它们。解决方法:
– 在 Settings → Go → Language Server → Build.ignore 中添加 **/pkg/** 和 **/bin/**
– 或者更彻底:定期运行 go clean -i 清掉已安装的命令(即 bin/ 下文件)
多项目切换时环境变量没刷新?关键在作用域分层
GoLand 的环境变量有四层:系统级(shell 启动时加载)、IDE 进程级(启动时读取)、项目级(Settings → Go → Go Environment)、运行配置级(Run Configurations)。改完项目级变量后不重启 IDE,Terminal 和已打开的 Run Configuration 仍用旧值。最常被忽略的是:从桌面图标启动 GoLand 时,.zshrc 里的 export 根本不生效,导致 Terminal 里 go env GOROOT 为空——必须用 open -a GoLand 或从终端执行 /Applications/GoLand.app/Contents/MacOS/goland 启动才能继承 shell 环境。

















