問題描述:
在 GoLand 中,api/tls.go 文件中引用了 api/type.go 中定義的結構體 Options,但 GoLand 把 Options 標紅顯示為未定義(undefined symbol),盡管程序實際可以正常編譯和運行(go build / go run 都通過)。
本質原因:
GoLand 內部維護了一個符號索引系統,來做:
- 語法高亮
- 自動補全
- 跳轉定義 / Find Usages
當以下情況發生時,GoLand 可能就會“搞不清楚這些符號在哪”:
- 文件名變更
- 文件移動
- 包名或結構體名剛剛修改 go.mod 或目錄結構不規范
- 項目剛 clone 下來,還沒完全索引
- IDE沒正確解析你當前的 go.mod 路徑或模塊名
解決方案:
- 點擊頂部菜單:File → Invalidate Caches / Restart…
- 選擇:Invalidate and Restart
- 等 IDE 重新啟動并重新索引所有 Go 文件
- 等幾秒鐘至左下角 Indexing 消失
此操作會清空 GoLand 的符號索引緩存,并在重啟后重新建立所有依賴、包、函數、結構體的引用關系。