現已釋出!閱讀關於 11 月新增功能和修復的內容。

Visual Studio Code 中的 Go

使用 Visual Studio Code 的 Go 擴充套件,您可以獲得 IntelliSense、程式碼導航、符號搜尋、測試、除錯以及更多功能,這將幫助您進行 Go 開發。

Go extension banner

您可以從 VS Code Marketplace 安裝 Go 擴充套件。

觀看 “VS Code Go 入門”,瞭解如何使用 VS Code Go 構建您的第一個 Go 應用程式。

本文件僅描述了 Go 擴充套件提供的部分功能。有關支援功能的完整、最新的列表,請參閱擴充套件的 文件

IntelliSense

IntelliSense

IntelliSense 功能由 Go 語言伺服器 gopls 提供,該伺服器由 Go 團隊維護。您可以使用 gopls 設定 來配置 gopls 的行為。

語義語法高亮

為了獲得比預設的基於 TextMate 的語法高亮更好的語法高亮效果,我們建議透過啟用 Gopls 的 ui.semanticTokens 設定來啟用 語義高亮

"gopls": { "ui.semanticTokens": true }

自動完成

在 Go 檔案中鍵入時,您可以看到 IntelliSense 為您提供建議的補全。這甚至適用於當前、已匯入和尚未匯入的包中的成員。只需鍵入任何包名後跟 .,您就會獲得相應包成員的建議。

提示:使用 ⌃Space(Windows、Linux Ctrl+Space 手動觸發建議。

懸停資訊

將滑鼠懸停在任何變數、函式或結構體上,都會顯示有關該項的資訊,例如文件、簽名等。

簽名幫助

當您在呼叫函式時開啟 (,會彈出一個視窗提供函式的簽名幫助。當您繼續鍵入引數時,提示(下劃線)會移動到下一個引數。

提示:當游標位於函式呼叫中的 () 內時,使用 ⇧⌘Space(Windows、Linux Ctrl+Shift+Space 手動觸發簽名幫助。

程式碼導航

程式碼導航功能可在編輯器中的上下文選單中使用。

  • 轉到定義 F12 - 轉到型別定義的原始碼。
  • 轉到型別定義 - 轉到定義符號的型別。
  • 預覽定義 ⌥F12(Windows Alt+F12、Linux Ctrl+Shift+F10 - 調出包含型別定義的預覽視窗。
  • 查詢引用 ⇧F12(Windows、Linux Shift+F12 - 顯示型別的全部引用。
  • 顯示呼叫層次結構 ⇧⌥H(Windows、Linux Shift+Alt+H - 顯示從函式呼叫或到函式的所有呼叫。
  • 轉到實現 ⌘F12(Windows、Linux Ctrl+F12 - 調出包含介面的所有實現的列表的預覽視窗(如果使用介面型別符號觸發),或者型別實現的介面(如果使用具體型別符號觸發)。
  • 查詢所有實現 - 顯示介面的所有實現(如果使用介面型別符號觸發),或者型別實現的介面(如果使用具體型別符號觸發)。

您可以透過命令面板中的轉到符號命令使用符號搜尋進行導航(⇧⌘P(Windows、Linux Ctrl+Shift+P)。

  • 在檔案中查詢符號 - ⇧⌘O(Windows、Linux Ctrl+Shift+O
  • 在工作區中查詢符號 - ⌘T(Windows、Linux Ctrl+T

您還可以使用Go: 切換測試檔案命令在 Go 檔案及其測試實現之間來回導航。

構建和診斷

Go 語言伺服器 (gopls) 會檢測工作區中發現的構建和 vet 錯誤。執行上述任何/所有命令產生的錯誤和警告將在編輯器中顯示為紅色/綠色波浪線。這些診斷資訊也顯示在問題面板中(檢視 > 問題)。

您可以使用 go.lintOnSave 設定新增額外的 lint 檢查,並使用 go.lintTool 設定配置您選擇的 lint 工具(staticcheckgolangci-lintrevive)。

格式化

您可以使用 ⇧⌥F(Windows Shift+Alt+F、Linux Ctrl+Shift+I 格式化您的 Go 檔案,或者透過命令面板或編輯器中的上下文選單執行格式化文件命令。

預設情況下,格式化會在您儲存 Go 檔案時執行。您可以將 [go] 語言識別符號的 editor.formatOnSave 設定為 false 來停用此行為。您可以使用 JSON 設定檔案更改此設定。

"[go]": {
        "editor.formatOnSave": false
}

當您為 Go 檔案啟用了多個格式化程式時,您可以選擇 Go 擴充套件作為預設格式化程式。

"[go]": {
    "editor.defaultFormatter": "golang.go"
}

格式化由 gopls 提供。如果您想要 gofumpt 風格的格式化,您可以將 gopls 配置為使用 gofumpt

"gopls": {
    "formatting.gofumpt": true
}

測試

VS Code 的 測試 UI 和編輯器 CodeLens 元素允許使用者輕鬆地執行給定函式、檔案、包或工作區的測試、基準測試和剖析。

或者,相同的功能可透過一組命令獲得

在命令面板中鍵入“Go: test”可以探索許多與測試相關的命令。

Test Commands

上面前三個命令可用於使用 gotests 為當前包、檔案或游標處的函式生成測試骨架。最後幾個命令可用於使用 go test 運行當前包、檔案或游標處的測試。還有一個用於獲取測試覆蓋率的命令。

您可以將擴充套件配置為執行測試並計算測試覆蓋率,使用

  • go.testOnSave
  • go.coverOnSave
  • go.testFlags

匯入包

擴充套件預設情況下會組織匯入並刪除未使用的匯入。對於不同的行為,您可以按照這些說明來覆蓋每種語言的預設設定。

執行Go: 新增匯入命令,獲取可以匯入到您的 Go 檔案中的包列表。選擇一個,它將被新增到您的 Go 檔案的匯入塊中。

重構

選擇要重構的區域(例如變數、函式體等)。單擊所選區域中出現的程式碼操作燈泡圖示,或從 VS Code 上下文選單中選擇重構...重新命名符號F2)。

除錯

Go 擴充套件利用 Delve 偵錯程式,讓您能夠除錯 Go 程式碼。

閱讀 在 VS Code 中除錯 Go 程式 以獲取設定步驟、支援的功能、配置、遠端除錯資訊和故障排除指南。有關通用除錯功能,如檢查變數、設定斷點以及其他與語言無關的活動,請查閱 VS Code 除錯

一些 Go 特有的功能包括

  • 本地和遠端除錯
  • 使用 Delve 的表示式語法進行資料檢查
  • 使用 DEBUG CONSOLE 中的 dlv 命令進行動態配置更改和檢查選項
  • 隱藏/顯示系統 goroutine 的能力(使用 hideSystemGoroutines 配置)
  • 反彙編檢視支援(右鍵單擊原始碼並選擇開啟反彙編檢視
  • 實驗性函式呼叫、核心檢查、Mozilla rr 支援

後續步驟

以上簡要介紹了 VS Code 中 Go 擴充套件的功能。有關更多資訊,請參閱 Go 擴充套件 README 中提供的詳細資訊。

要了解 Go 擴充套件的最新功能/錯誤修復,請參閱 CHANGELOG

如果您有任何問題或功能請求,請隨時在 Go 擴充套件 vscode-go repo 中提出。

如果您想了解更多關於 VS Code 的資訊,請嘗試以下主題:

© . This site is unofficial and not affiliated with Microsoft.