參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

在 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 團隊維護的 Go 語言伺服器 gopls 提供。您可以使用 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: Toggle Test File 命令在 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: Add Import 命令,可以獲取可匯入到您的 Go 檔案中的包列表。選擇一個,它就會被新增到您的 Go 檔案的匯入塊中。

重構

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

除錯

Go 擴充套件允許您利用 Delve 偵錯程式來除錯 Go 程式碼。

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

一些 Go 特有的功能是

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

後續步驟

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

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

如果您有任何問題或功能請求,請隨時在 Go 擴充套件的 vscode-go 倉庫中記錄它們。

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