Gopls v0.20.0 版本釋出
此版本為 gopls 引入了一個新的實驗性模型上下文協議 (MCP) 伺服器,可用於將 gopls 的部分功能整合到 AI 輔助環境中。
gopls 的文件現已釋出在 Go 專案網站上,網址為 https://golang.org.tw/gopls。(此連結指向最新的 gopls 版本;要檢視最新提交的文件,請使用 https://tip.golang.org/gopls。)與 GitHub 中的 Markdown 檔案不同,這些頁面會被 Google 搜尋引擎索引。
配置更改
此版本預設啟用了模組快取中軟體包的新持久索引。此功能在 v0.19 中首次嘗試,但由於後來已修復的問題而被回滾。
基於 Web 的功能
“拆分軟體包”工具
source.splitPackage
程式碼操作會開啟一個基於 Web 的工具,幫助您將一個軟體包拆分成兩個或多個元件,這些元件之間的依賴關係是無環的。
要使用它,請命名一組元件,將每個宣告分配給一個元件,然後視覺化元件之間的依賴關係(包括它們是否形成迴圈)。每次編輯程式碼後重新整理頁面以檢視最新資訊。
該工具使您可以輕鬆地迭代潛在的分解,直到找到滿意的方案。該工具的未來版本將自動化程式碼轉換,但目前您必須手動完成此步驟。
編輯功能
模型上下文協議伺服器
Gopls 現在包含一個實驗性的內建模型上下文協議 (MCP) 伺服器,允許它以 MCP 工具的形式將部分功能暴露給 AI 助手。
有關更多資訊,請參閱文件。
注意:這是 gopls 的一種全新操作模式,因此我們仍在嘗試提供最佳工具集和說明。請告知我們它的執行情況。此外,請注意,允許 LLM 在您的工作空間中執行操作會帶來額外的安全考慮,如以上文件所述。
分析功能
ignoredError
提示
新的 ignoredError
提示有助於捕獲被錯誤丟棄的錯誤。它會在任何隱式忽略了錯誤結果的函式呼叫語句後插入一個 // ignore error
提示。例如,以下程式碼
f.Close()
將顯示為
f.Close() // ignore error
要抑制此提示,請在呼叫語句後編寫一個包含 ignore error
的實際註釋,或將結果顯式分配給一個匿名 _
變數。一小組常用函式(如 fmt.Println
)已排除在此檢查之外。
使用此配置啟用它:{"hints": {"ignoredError": true}}
。
unusedfunc
還會報告未使用的 type
、var
和 const
宣告
unusedfunc 分析器現在會報告在其宣告包內未被引用的所有未匯出型別、變數和常量。(未被引用的已匯出符號的問題無法在分析框架中表達,因為它依賴於整個工作空間。)
程式碼轉換功能
重新命名操作現在允許您重新命名嵌入欄位,例如 struct{ T }
中的 T,只要操作是在欄位宣告 (T) 處發起的。欄位及其型別都將被重新命名。
本文件的原始碼可以在 golang.org/x/tools/gopls/doc 下找到。