🚀 在 VS Code 中

前往 Visual Studio Code

透過使用 Visual Studio Code 的 Go 擴充功能,您將獲得諸如 IntelliSense、程式碼導覽、符號搜尋、測試、偵錯以及更多功能,這些功能將在 Go 開發中為您提供協助。

Go extension banner

您可以從 VS Code 市集 安裝 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) 手動觸發建議。

Hover 資訊

將滑鼠游標停留在任何變數、函式或結構上,會提供有關該項目的資訊,例如文件、簽章等。

簽章說明

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

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

程式碼導覽

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

  • 前往定義 F12 - 前往類型定義的原始碼。
  • 前往類型定義 - 前往定義符號的類型。
  • 查看定義 ⌥F12 (Windows Alt+F12、Linux Ctrl+Shift+F10) - 帶出一個 Peek 視窗,其中包含類型定義。
  • 前往參考 ⇧F12 (Windows、Linux Shift+F12) - 顯示該類型的所有參考。
  • 顯示呼叫階層 ⇧⌥H (Windows、Linux Shift+Alt+H) - 顯示從函式或到函式的所有呼叫。
  • 前往實作 ⌘F12 (Windows、Linux Ctrl+F12) - 帶出一個 Peek 視窗,其中包含介面的所有實作列表 (如果使用介面類型符號觸發),或類型實作的介面 (如果使用具體類型符號觸發)。
  • 尋找所有實作 - 顯示介面的所有實作 (如果使用介面類型符號觸發),或類型實作的介面 (如果使用具體類型符號觸發)。

您可以使用 Command Palette 中的 前往符號 命令 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 透過符號搜尋進行導覽。

  • 前往檔案中的符號 - ⇧⌘O (Windows、Linux Ctrl+Shift+O)
  • 前往工作區中的符號 - ⌘T (Windows、Linux Ctrl+T)

您也可以使用 Go: 切換測試檔案 命令,在 Go 檔案及其測試實作之間來回導覽。

建置與診斷

Go 語言伺服器 (gopls) 會偵測在工作區中找到的建置和 vet 錯誤。來自執行任何/所有上述項目的錯誤和警告將在編輯器中以紅色/綠色波浪線顯示。這些診斷也會顯示在 問題 面板 (檢視 > 問題) 中。

您可以使用 go.lintOnSave 設定新增其他程式碼檢查,並使用 go.lintTool 設定設定您選擇的程式碼檢查工具 (staticcheckgolangci-lintrevive)。

格式化

您可以使用 ⇧⌥F (Windows Shift+Alt+F、Linux Ctrl+Shift+I) 或從 Command Palette 或編輯器中的上下文選單執行 格式化文件 命令來格式化您的 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 元素允許使用者輕鬆執行給定函式、檔案、套件或工作區的測試、基準測試、效能分析。

或者,相同的功能可以透過一組命令來使用

您可以透過在 Command Palette 中輸入「Go: test」來探索許多與測試相關的命令。

Test Commands

上述前三個命令可用於使用 gotests 為目前套件、檔案或游標位置的函式產生測試骨架。最後幾個命令可用於使用 go test 在目前套件、檔案或游標位置執行測試。還有一個用於取得測試涵蓋率的命令。

您可以設定擴充功能以使用以下設定執行測試並計算測試涵蓋率

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

匯入套件

擴充功能預設會組織匯入並移除未使用的匯入。如需不同的行為,您可以依照 這些指示 覆寫每個語言的預設設定。

執行 Go: 新增匯入 命令以取得可以匯入到您的 Go 檔案的套件清單。選擇一個套件,它將新增至您的 Go 檔案的匯入區塊中。

重構

選取要重構的區域 (例如變數、函式主體等)。按一下選取區域中出現的 Code Action 燈泡圖示,或從 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,請嘗試以下主題