alt+f7 默认仅查找当前文件引用,需在 find usages 窗口将 scope 改为 project 或 all places 并点击 find;ctrl+alt+shift+f7 可直接全项目搜索;测试文件需标记为 test sources root 才被索引;复杂调用链建议配合 ctrl+alt+h 查看分层调用关系。

Alt+F7 查找所有引用,但默认只显示当前文件
直接按 Alt+F7(macOS 是 Option+F7)确实能查引用,但很多人发现结果里只有本文件内的调用——这不是 bug,是 GoLand 默认把搜索范围设为“当前文件”。想看整个项目里的引用,必须手动改范围。
操作很简单:在弹出的 Find Usages 工具窗口右上角,找到「Scope」下拉框,从 Current file 改成 Project 或 All places。如果项目用了模块(go.mod),选 Project 就够了;跨模块或含 vendor 时,选 All places 更保险。
- 注意:改完范围后要重新点击「Find」按钮,不是自动刷新
- 如果引用没出现在结果里,先确认函数/变量名没被重命名或作用域限制(比如未导出的小写标识符)
- GoLand 不会索引未被 build 的代码路径(如条件编译中被屏蔽的
// +build ignore文件)
Ctrl+Alt+Shift+F7 能跳过范围选择,直接搜全项目
这个快捷键是 Alt+F7 的“全量版”,按下后自动以 Project 范围执行查找,省去手动切 Scope 的步骤。适合高频查看全局引用的场景。
但它也有代价:
- 首次运行会触发一次完整索引扫描,小项目秒出,大项目(尤其含大量第三方依赖)可能卡顿 2–5 秒
- 结果里会包含
vendor目录下的引用,如果你不关心依赖内部调用,得手动过滤掉 vendor 路径 - 对未开启 Go modules 的老项目,它可能漏掉 GOPATH 下非当前 workspace 的引用
引用结果里看不到 test 文件?检查测试源码根目录设置
默认情况下,GoLand 把 _test.go 文件当普通源码处理,但有时 Alt+F7 结果里就是不显示测试文件里的调用——大概率是测试目录没被识别为源码根目录。
验证和修复方法:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 右键点击
test或testdata文件夹 → 选择Mark Directory as→ 确保勾选了Test Sources Root - 如果项目结构是
pkg/name/name_test.go这种平铺式,还要确认pkg/name本身是否被标记为Sources Root - 改完标记后,重启索引:菜单栏
File→Invalidate Caches and Restart→Invalidate and Restart
否则,即使你在 xxx_test.go 里写了 funcName(),Find Usages 也视而不见。
复杂引用链建议配合 Call Hierarchy 看调用路径
Alt+F7 只告诉你“谁调了我”,不告诉你“谁调了调我的那个函数”。比如 A → B → C,你查 C 的引用,只能看到 B;想确认 A 是否间接调用 C,得在 B 的引用结果里再点开 B,重复查一次。
更高效的做法是:光标停在 C 上,按 Ctrl+Alt+H(macOS 是 Cmd+Option+H)打开 Call Hierarchy。它会分层展开:
- 第一层:直接调用 C 的函数(B)
- 第二层:调用 B 的函数(A)
- 第三层:调用 A 的入口(如
main或测试函数)
但要注意:Call Hierarchy 对间接调用(比如通过 interface、reflect、闭包)支持有限,这类引用仍得靠 Alt+F7 配合人工扫代码。
真正容易被忽略的是:interface 实现体的引用不会自动出现在被调用方的结果里。比如你查 io.Reader.Read 的引用,os.File.Read 不会列出来——得单独去 os.File 类型里查它的 Read 方法。










