gopls缓存目录位于$(go env GOCACHE)/gopls(如macOS默认~/Library/Caches/go-build/gopls),删它可修复补全异常,因其存储符号索引、类型信息等,损坏或过期会导致补全缺失、跳转失效;需用gopls cache delete命令清理,并配合GoLand的Invalidate Caches and Restart同步刷新IDE符号数据库。

GoLand 的代码补全字典没有独立的“缓存清理入口”,它依赖 gopls 语言服务器的索引和本地项目符号数据库;真正要清的不是“字典”,而是 gopls 缓存目录 + GoLand 的符号索引文件。
gopls 缓存目录在哪,为什么删它能修复补全异常
GoLand 默认启用 gopls 作为 Go 语言服务器,它的符号索引、类型信息、包依赖图都存在本地缓存中。这些缓存一旦损坏或 stale(比如切换分支、go mod tidy 后未重载、IDE 异常退出),就会导致补全缺失、跳转失效、错误提示残留。
-
gopls缓存路径由gopls自己管理,通常位于:$(go env GOCACHE)/gopls(macOS 默认是~/Library/Caches/go-build/gopls) - 它不随
go clean -cache一并清除——该命令只清编译用的.a文件,不碰gopls的cache子目录 - 删错位置没用:比如只删
~/Library/Caches/JetBrains/GoLand*/gopls,这个路径是 GoLand 自己存的轻量级元数据,不是gopls真正的索引库
怎么安全删掉 gopls 符号缓存
别手动找路径删,用 gopls 自带的清理命令最可靠:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 确保已安装
gopls(运行which gopls应返回路径;若无,先go install golang.org/x/tools/gopls@latest) - 在终端执行:
gopls cache delete—— 它会清空所有模块索引、包缓存、快照状态,但保留配置 - 执行后重启 GoLand(不是“Reload project”,是彻底关闭再打开),
gopls会在后台自动重建索引 - 如果想观察重建过程,打开 GoLand 的
Help → Show Log in Explorer,看gopls.log里是否有cache miss或indexing日志
GoLand 自身的符号数据库也要同步清理
即使 gopls 重建了,GoLand 还可能用旧的本地索引做补全(尤其在离线或 gopls 崩溃时)。这时需强制刷新 IDE 内部符号表:
- 菜单栏点
File → Invalidate Caches and Restart… - 勾选
Invalidate and Restart(不要选 “Just restart”) - 注意:这会清掉你所有的本地搜索历史、最近文件列表、临时断点,但不会动代码、设置或插件
- 重启后,GoLand 会重新扫描整个项目结构,并基于当前
gopls状态生成新补全候选
补全还乱?检查这几个容易被忽略的点
清理完缓存,如果补全仍然漏包、显示 undefined 或卡在 loading,问题往往不在缓存本身:
-
go.mod里有replace指向本地路径,但该路径下没go.mod或权限不对 ——gopls会跳过索引,补全就失效 - 项目根目录没被识别为 Go Module:右键项目 →
Mark Directory as → Sources Root或确认go.mod在正确层级 -
Settings → Go → Language Server里启用了Disable features for directories matching,且误配了vendor/或internal/规则 - 用了
GOOS=js或CGO_ENABLED=0构建,但gopls默认按 host 环境索引 —— 需在Settings → Go → Build Tags & Vendoring里显式填入对应 tag










