此插件爲 Go 語言在 VS Code 中開發提供了多種語言支持。javascript
閱讀版本變動日誌瞭解此插件過去幾個版本的更改內容。java
gocode
)gogetdoc
或 godef+go code
)gogetdoc
或 godef+go code
)gogetdoc
或 godef+go code
)guru
)go-outline
)go-symbols
)goreturns
或 go imports
,一樣能夠移除未使用導入,或使用 go fmt
gorename
。注意:Windows 工做環境下消除重命名須要在路徑中有 diff
工具gopkgs
)gomodifytags
)impl
)fillstruct
)go build
和 go test
)go vet
和以警告顯示錯誤golint, gometalinter, staticcheck, golangci-lint
或 revive
)gotests
)delve
)goplay
)安裝和打開 Visual Studio Code。按住 Ctrl+Shift+X
或 Cmd+Shift+X
打開插件面板。找到並安裝 Go 插件。一樣能夠經過 Marketplace 安裝此插件。在 VS Code 中打開任何以 .go
爲後綴的文件。此插件便啓動了。git
此插件用了一系列 Go 工具以此提供豐富的功能。這些工具默認安裝在你的 GOPATH 路徑下。若是你但願讓這些工具安裝在獨立的地方,在設置中的 go.toolsGopath
中提供你指望的地方。經過此文檔瞭解更多—— Go tools that the Go extension depends on 。github
你將在右側底部看到 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
設置,那麼您可能沒法從還沒有構建的依賴項中得到新的結果。 所以,請確保在這種狀況下手動構建了依賴項。服務器
Go 插件在安裝 go 後即可準備使用。 若是要自定義功能,能夠在 「用戶」 或「工做區」設置中設置。 閱讀 All Settings & Commands in Visual Studio Code Go extension ,以獲取完整的選項列表及其說明。框架
Go 插件使用一系列 Go tools 來提供豐富的語言功能。 另外一種方法是使用一個提供相同功能的語言服務器。dom
此前,咱們使用 language server from Sourcegraph 添加支持。因爲它再也不更新,而且它不支持 Go 模塊,咱們如今轉而使用 language server from Google 。
如下是可用於控制語言服務器使用的設置。 您須要從新加載 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)
若是你想嘗試其餘語言服務器,好比,bingo , 而後安裝並添加以下設置
"go.alternateTools": {
"gopls": "bingo"
}
複製代碼
這將告訴 Go 插件在 gopls 中使用 bingo。
若是你在使用 gopls
語言服務器時發現任何問題, 請先在 list of existing issues for gopls 中查看並在註冊新案例以前用您的案例更新相關問題,網址爲 github.com/golang/go/i…>
linter 是一個反饋代碼風格和給出建議的工具。此插件默認使用官方的 golint 做爲一個 linter。
您能夠經過在設置中將 go.lintTool
設置爲 「gometalinter」 來更改默認的 linter 而使用更高級的 Go Meta Linter 。
Go Meta Linter 使用多種 linter 的集合,此插件將會爲你安裝。
一些十分實用的 linter 工具:
若是隻想運行特定的 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 的結果將顯示在代碼中(帶有建議的位置將加下劃線,以及輸出窗口中。
除了集成的編輯功能外,該插件還在 Command Palette 中提供了幾個用於處理 Go 文件的命令:
Go: Add Import
在你的 Go 上下文中,從包列表中添加一個導入Go: Current GOPATH
查看當前配置的 GOPATHGo: 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
設置。
要使用調試器,你當前必須手動安裝 delve
。 閱讀 Installation Instructions 獲取詳細細節。在 MacOS 上,它須要建立一個自簽名證書來簽署 dlv
二進制文件。
更多請閱讀 Debugging Go Code Using VS Code。
要使用 VS Code 進行遠程調試,請閱讀 Remote Debugging。
要快速安裝(或更新)全部依賴項,請參閱 Go Tools wiki page。
您能夠在插件開發期間設置一個用於調試插件的開發環境。 閱讀 Building, Debugging and Sideloading the extension in Visual Studio Code
請參閱咱們 Frequently Asked Questions 維基,得到你問題的答案或者進行故障排查。
此項目歡迎貢獻和建議, 請仔細閱讀咱們的 Contributing Guide 瞭解你怎麼作出貢獻,它還包括有關貢獻者許可協議的詳細信息。
此項目採用 Microsoft Open Source Code of Conduct,有關更多信息請參閱 Code of Conduct FAQ 或聯繫 opencode@microsoft.com 以及其餘問題或意見。