Visual Studio Code Go 插件文檔翻譯

此插件爲 Go 語言在 VS Code 中開發提供了多種語言支持。javascript

閱讀版本變動日誌瞭解此插件過去幾個版本的更改內容。java

1. 語言功能 (Language Features)

1.1 智能感知 (IntelliSense)

  • 編碼時符號自動補全(使用 gocode
  • 編碼時函數簽名幫助提示(使用 gogetdocgodef+go code
  • 鼠標懸停符號時快速顯示信息(使用 gogetdocgodef+go code

1.2 代碼導航 (Code Navigation)

  • 快速瀏覽符號定義(使用 gogetdocgodef+go code
  • 查找符號的引用和接口的實現(使用 guru
  • 查找文件中的某符號或者查看文件結構大綱(使用 go-outline
  • 查找工做區某符號(使用 go-symbols
  • 在 Go 程序和相應測試文件之間切換

1.3 代碼編輯 (Code Editing)

  • 代碼片斷快速編程
  • 文件保存時手動格式化代碼(使用 goreturnsgo imports ,一樣能夠移除未使用導入,或使用 go fmt
  • 符號重命名(使用 gorename 。注意:Windows 工做環境下消除重命名須要在路徑中有 diff 工具
  • 在當前文件添加導入(使用 gopkgs
  • 添加 / 移除結構域中的標籤(使用 gomodifytags
  • 爲接口生成方法存根(使用 impl
  • 爲結構字面量填充默認值(使用 fillstruct

1.4 代碼診斷 (Diagnostics)

  • Build-on-save 編譯代碼和顯示構建錯誤(使用 go buildgo test
  • Vet-on-save 運行 go vet 和以警告顯示錯誤
  • Lint-on-save 以警告顯示檢查錯誤(使用 golint, gometalinter, staticcheck, golangci-lintrevive
  • 編輯時報告語義 / 語法錯誤

1.5 測試 (Testing)

  • 在當前文件,當前包,整個工做區運行測試,在光標下使用命令行或 codelens
  • 運行基準程序,在光標下使用命令行或 codelens
  • 顯示代碼覆蓋率,基於需求或在當前包運行測試以後
  • 生成單元測試框架(使用 gotests

1.6 調試 (Debugging)

  • 調試你的代碼,二進制文件或測試文件(使用 delve

1.7 其餘 (Others)

  • 安裝 / 更新全部依賴的 Go 工具
  • 上傳至 Go Playground(使用 goplay

2. 如何使用此插件?(How to use this extension?)

安裝和打開 Visual Studio Code。按住 Ctrl+Shift+XCmd+Shift+X 打開插件面板。找到並安裝 Go 插件。一樣能夠經過 Marketplace 安裝此插件。在 VS Code 中打開任何以 .go 爲後綴的文件。此插件便啓動了。git

此插件用了一系列 Go 工具以此提供豐富的功能。這些工具默認安裝在你的 GOPATH 路徑下。若是你但願讓這些工具安裝在獨立的地方,在設置中的 go.toolsGopath 中提供你指望的地方。經過此文檔瞭解更多—— Go tools that the Go extension depends ongithub

你將在右側底部看到 Analysis Tools Missing (分析工具缺失),點擊消息將安裝全部依賴的 Go 工具。你一樣能夠運行 command Go: Install/Update tools 安裝 / 更新工具。golang

注意 1:閱讀 GOPATH in the VS Code Go extension 瞭解不一樣的方式獲得此插件經過設置 GOPATH。編程

注意 2:Format on save 特性的超時時間爲 750 毫秒,以後格式化將停止。 您可使用設置 editor.formatOnSaveTimeout 更改此超時。 在 Visual Studio 代碼中啓用 Auto Save 後,此功能將被關閉。json

注意三:此插件使用 gocode 在您編碼時提供補全列表。 若是您已禁用 go.buildOnSave 設置,那麼您可能沒法從還沒有構建的依賴項中得到新的結果。 所以,請確保在這種狀況下手動構建了依賴項。服務器

2.1 自定義 Go 插件功能 (Customizing the Go extension features)

Go 插件在安裝 go 後即可準備使用。 若是要自定義功能,能夠在 「用戶」 或「工做區」設置中設置。 閱讀 All Settings & Commands in Visual Studio Code Go extension ,以獲取完整的選項列表及其說明。框架

2.2 Go 語言服務器 (Go language Server)

Go 插件使用一系列 Go tools 來提供豐富的語言功能。 另外一種方法是使用一個提供相同功能的語言服務器。dom

此前,咱們使用 language server from Sourcegraph 添加支持。因爲它再也不更新,而且它不支持 Go 模塊,咱們如今轉而使用 language server from Google

  • 若是你正在使用 Sourcegraph 的語言服務器,你能夠繼續使用只要你不使用 Go 模塊。
  • 因爲 Google 的語言服務器爲 Go 模塊提供了更好的支持,當插件檢測到您開發的項目中使用了 Go 模塊時,系統會提示您使用 Google 語言服務器。
  • 若是您以前從未使用過語言服務器,如今選擇使用它,系統將提示您安裝並使用 Google 提供的語言服務器。

2.2.1 控制 Go 語言服務器使用的設置 (Settings to control the use of the Go language server)

如下是可用於控制語言服務器使用的設置。 您須要從新加載 VS Code 窗口才能使這些更改的設置生效。

  • go.useLanguageServer 設置爲 true 啓用語言服務器

  • 使用 go.languageServerExperimentalFeatures 設置來控制您但願語言服務器啓用哪些功能。診斷 (Diagnostics) 是默認狀況下惟一未啓用的功能。 若是要從語言服務器啓動此功能,請在設置中作以下添加

    "go.languageServerExperimentalFeatures": {
    "diagnostics": true
    }
    複製代碼
  • 添加以下設置可在一個日誌文件中收集日誌

    "go.languageServerFlags": ["-logfile", "path to a text file that exists"]
    複製代碼
  • 設置 「go.languageServerFlags」:[「- rrp.trace」] 以在輸出面板中查看完整的 rpc 跟蹤 (View -> Output -> gopls)

2.2.2 更改當前使用服務器的設置 (setting to change the language server being used)

若是你想嘗試其餘語言服務器,好比,bingo , 而後安裝並添加以下設置

"go.alternateTools": {
  "gopls": "bingo"
}
複製代碼

這將告訴 Go 插件在 gopls 中使用 bingo。

2.2.3 提供關於 gopls 的反饋 (provide feedback on gopls)

若是你在使用 gopls 語言服務器時發現任何問題, 請先在 list of existing issues for gopls 中查看並在註冊新案例以前用您的案例更新相關問題,網址爲 github.com/golang/go/i…>

2.3 林特 (Linter)

linter 是一個反饋代碼風格和給出建議的工具。此插件默認使用官方的 golint 做爲一個 linter。

您能夠經過在設置中將 go.lintTool 設置爲 「gometalinter」 來更改默認的 linter 而使用更高級的 Go Meta Linter

Go Meta Linter 使用多種 linter 的集合,此插件將會爲你安裝。

一些十分實用的 linter 工具:

  • errcheck 檢查你代碼中未檢測的錯誤。
  • varcheck 找出未使用的屈居變量和常量。
  • deadcode 找出未使用代碼。

若是隻想運行特定的 linters(某些 linters 很慢),能夠修改配置以指定它們:

"go.lintFlags": ["--disable=all", "--enable=errcheck"],
複製代碼

或者,您可使用 staticcheck,它可能具備明顯優於 gometalinter 的性能,由於僅支持這些工具的部分。

另外一種選擇是 golangci-lint,它具備 megacheck 相同的性能特色,但支持更普遍的工具。 您可使用 go.lintFlags 配置 golangci-lint,例如,僅在新代碼中顯示問題並啓用全部 linters:

"go.lintFlags": ["--enable-all", "--new"],
複製代碼

golint 的另外一種選擇是 revive。 它是可擴展的,可設置的,提供了比 golint 更多的規則,而且具備明顯更好的性能。

配置 revive,使用:

"go.lintFlags": ["-exclude=vendor/...", "-config=${workspaceFolder}/config.toml"]
複製代碼

最後,這些 linter 的結果將顯示在代碼中(帶有建議的位置將加下劃線,以及輸出窗口中。

2.4 命令 (Commands)

除了集成的編輯功能外,該插件還在 Command Palette 中提供了幾個用於處理 Go 文件的命令:

  • Go: Add Import 在你的 Go 上下文中,從包列表中添加一個導入
  • Go: Current GOPATH 查看當前配置的 GOPATH
  • Go: Test at cursor 在活動文件的當前光標位置運行測試
  • Go: Test Package 在包含活動文檔的包中運行全部測試
  • Go: Test File 在當前活動文檔中運行全部測試
  • Go: Test Previous 運行之前運行的測試命令
  • Go: Test All Packages in Workspace 在當前工做空間中運行全部測試
  • Go: Generate Unit Tests For Package 爲當前包生成單元測試
  • Go: Generate Unit Tests For File 爲當前文件生成單元測試
  • Go: Generate Unit Tests For Function 爲當前文件中的所選函數生成單元測試
  • Go: Install Tools 安裝 / 更新插件所依賴的全部 Go 工具
  • Go: Add Tags 將已配置的標記添加到選定的結構字段。
  • Go: Remove Tags 從選定的結構域中刪除已配置的標記。
  • Go: Generate Interface Stubs 爲給定接口生成方法存根
  • Go: Fill Struct 使用默認值填充結構字面量
  • Go: Run on Go Playground 將當前選擇或文件上傳到 Go Playground

您能夠從命令面板中訪問全部上述命令 (Cmd+Shift+P or Ctrl+Shift+P)。

其中一些命令做爲實驗性功能在編輯器上下文菜單中是可選擇的。要控制在編輯器上下文菜單中顯示哪些命令,請更新 go.editorContextMenuCommands 設置。

2.5 可選:調試 (Opthinal: Debugging)

要使用調試器,你當前必須手動安裝 delve。 閱讀 Installation Instructions 獲取詳細細節。在 MacOS 上,它須要建立一個自簽名證書來簽署 dlv 二進制文件。

更多請閱讀 Debugging Go Code Using VS Code

2.5.1 遠程調試 (Remote Debugging)

要使用 VS Code 進行遠程調試,請閱讀 Remote Debugging

3. 安裝或更新因此依賴項 (Install or update all dependencies)

要快速安裝(或更新)全部依賴項,請參閱 Go Tools wiki page

4. 構建和調試插件 (Building and Debugging the Extension)

您能夠在插件開發期間設置一個用於調試插件的開發環境。 閱讀 Building, Debugging and Sideloading the extension in Visual Studio Code

5. 常見問題 (FAQ)

請參閱咱們 Frequently Asked Questions 維基,得到你問題的答案或者進行故障排查。

6. 貢獻 (Contributing)

此項目歡迎貢獻和建議, 請仔細閱讀咱們的 Contributing Guide 瞭解你怎麼作出貢獻,它還包括有關貢獻者許可協議的詳細信息。

7. 行爲守則 (Code of Conduct)

此項目採用 Microsoft Open Source Code of Conduct,有關更多信息請參閱 Code of Conduct FAQ 或聯繫 opencode@microsoft.com 以及其餘問題或意見。

8. 許可證 (License)

MIT

相關文章
相關標籤/搜索