在 Visual Studio Code 中使用 Go

透過 Visual Studio Code 的 Go 擴充功能,您可以獲得 IntelliSense(智慧感知)、程式碼導航、符號搜尋、測試、偵錯等眾多功能,這些都能協助您進行 Go 開發。

Go extension banner

您可以從 VS Code 市集 (Marketplace) 安裝 Go 擴充功能。

觀看 "Getting started with VS Code Go"(VS Code Go 入門),了解如何使用 VS Code Go 建置您的第一個 Go 應用程式。

本文僅描述 Go 擴充功能所提供功能的一小部分。有關支援功能的完整且最新列表,請參閱該擴充功能的 說明文件 (documentation)

IntelliSense

IntelliSense

IntelliSense 功能由 Go 團隊維護的 Go 語言伺服器 gopls 提供。您可以透過 gopls 設定來設定 gopls 的行為。

語意語法高亮

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

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

自動補全

當您在 Go 檔案中輸入時,IntelliSense 會為您提供補全建議。這甚至適用於當前套件、已匯入套件以及尚未匯入套件中的成員。只需輸入任何套件名稱並加上 .,您就會收到相應套件成員的建議。

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

懸停資訊

將滑鼠懸停在任何變數、函式或結構上,即可獲得該項目的相關資訊,例如說明文件、簽章等。

簽章輔助

當您在呼叫函式時輸入 (,彈出視窗會提供該函式的簽章說明。隨著您繼續輸入參數,提示(底線)會移動到下一個參數。

提示:當游標位於函式呼叫的 () 內時,使用 ⇧⌘Space (Windows, Linux Ctrl+Shift+Space) 來手動觸發簽章說明。

程式碼導覽

程式碼導航功能可在編輯器的右鍵選單中找到。

  • 前往定義 (Go to Definition) F12 - 前往型別定義的原始程式碼。
  • 前往型別定義 (Go to Type Definition) - 前往定義符號的型別。
  • 預覽定義 (Peek Definition) ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10) - 彈出一個顯示型別定義的預覽視窗。
  • 前往參照 (Go to References) ⇧F12 (Windows, Linux Shift+F12) - 顯示該型別的所有參照。
  • 顯示呼叫階層 (Show Call Hierarchy) ⇧⌥H (Windows, Linux Shift+Alt+H) - 顯示函式的所有呼叫來源或去向。
  • 前往實作 (Go to Implementations) ⌘F12 (Windows, Linux Ctrl+F12) - 彈出一個預覽視窗,顯示介面的所有實作(若對介面符號觸發),或該型別實作的所有介面(若對具體型別符號觸發)。
  • 尋找所有實作 (Find All Implementations) - 顯示介面的所有實作(若對介面符號觸發),或該型別實作的所有介面(若對具體型別符號觸發)。

您可以透過命令面板 (Command Palette) (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 使用 **前往符號 (Go to Symbol)** 命令進行符號導航。

  • 前往檔案中的符號 (Go to Symbol in File) - ⇧⌘O (Windows, Linux Ctrl+Shift+O)
  • 前往工作區中的符號 (Go to Symbol in Workspace) - ⌘T (Windows, Linux Ctrl+T)

您也可以使用 **Go: Toggle Test File** 命令在 Go 檔案及其測試實作之間快速切換。

建置與診斷

Go 語言伺服器 (gopls) 會偵測工作區中的建置與檢查錯誤。執行上述任何/所有操作所產生的錯誤與警告,會在編輯器中以紅色/綠色波浪線顯示。這些診斷資訊也會出現在 **問題 (Problems)** 面板中(**檢視 (View)** > **問題 (Problems)**)。

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

格式化

您可以使用 ⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I),或從命令面板或編輯器右鍵選單執行 **格式化文件 (Format Document)** 命令來格式化您的 Go 檔案。

預設情況下,當您儲存 Go 檔案時會自動進行格式化。您可以透過將 [go] 語言識別碼的 editor.formatOnSave 在 VS Code 中開啟 在 VS Code Insiders 中開啟 設定為 false 來停用此行為。您可以透過 JSON 設定檔進行修改。

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

當您為 Go 檔案啟用了多個格式化工具時,可以選擇將 Go 擴充功能設為預設格式化工具。

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

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

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

測試

VS Code 的 測試 UI (Test UI) 和編輯器 CodeLens 元素允許使用者輕鬆地針對特定函式、檔案、套件或工作區執行測試、效能測試 (benchmarks) 與分析 (profiles)。

或者,也可以透過一組命令執行相同功能:

有許多與測試相關的命令,您可以透過在命令面板中輸入 "Go: test" 來探索。

Test Commands

上述前三個命令可用於利用 gotests 為當前套件、檔案或游標所在的函式產生測試骨架。後面的命令則可用於利用 go test 執行當前套件、檔案或游標所在位置的測試。另外也有用於取得測試覆蓋率 (test coverage) 的命令。

您可以透過以下設定來配置擴充功能以執行測試並計算測試覆蓋率:

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

匯入套件

該擴充功能預設會整理匯入項目並移除未使用的匯入。若需不同的行為,您可以依照 這些說明 覆寫每種語言的預設設定。

執行 **Go: Add Import** 命令可取得可匯入至 Go 檔案的套件清單。選擇其中一個,它將會自動新增至您 Go 檔案的匯入區塊中。

重構

選擇要重構的區域(例如變數、函式本體等)。點選出現在選取區域的「程式碼動作 (Code Action)」燈泡圖示,或者從 VS Code 右鍵選單中選擇 **重構... (Refactoring...)** 或 **重新命名符號 (Rename Symbol)** (F2)。

偵錯

Go 擴充功能利用 Delve 偵錯器,讓您能夠對 Go 程式碼進行偵錯。

請閱讀 Debug Go programs in VS Code 以了解設定步驟、支援的功能、配置、遠端偵錯資訊以及疑難排解指南。至於檢查變數、設定中斷點等與語言無關的一般偵錯功能,請參考 VS Code 偵錯

Go 特有的一些功能包括:

  • 本機與遠端偵錯
  • 使用 Delve 表達式語法進行資料檢查
  • 使用來自 DEBUG CONSOLE 的 dlv 命令進行動態配置變更與檢查選項
  • 隱藏/顯示系統 Goroutine 的能力(使用 hideSystemGoroutines 配置)
  • 反組譯檢視支援(在您的原始程式碼上按右鍵並選擇 **Open Disassembly View**)
  • 實驗性功能呼叫、核心檢查、Mozilla rr 支援

後續步驟

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

若要追蹤 Go 擴充功能的最新功能/錯誤修復,請參閱 CHANGELOG

如果您有任何問題或功能需求,請隨時在 Go 擴充功能的 vscode-go 儲存庫 中提出。

如果您想進一步了解 VS Code,請嘗試這些主題:

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