W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
VS Code上的 Go 語(yǔ)言插件,是由微軟官方推出的。Go 語(yǔ)言插件,是VS Code推出插件 API 時(shí)的首批插件,直到現(xiàn)在,也依然由VS Code團(tuán)隊(duì)成員進(jìn)行維護(hù)開(kāi)發(fā),項(xiàng)目地址是 https://github.com/microsoft/vscode-go 作為 VS Code 團(tuán)隊(duì)維護(hù)的項(xiàng)目,GitHub issues 是它唯一的反饋渠道。要安裝這個(gè)插件,你可以在VS Code的插件視圖里搜索 Go,也可以通過(guò)插件市場(chǎng)進(jìn)行下載。
VS Code也是 Go 團(tuán)隊(duì)官方推薦的開(kāi)發(fā)工具。
當(dāng)你從插件市場(chǎng)安裝了 Go 插件后,重啟VS Code,Go 插件就會(huì)在你第一次打開(kāi) Go 文件的時(shí)候被啟動(dòng)。
啟動(dòng)后,如果你還沒(méi)有設(shè)置過(guò) GOPATH 的話,VS Code會(huì)提示你,你既可以在自己的系統(tǒng)環(huán)境變量里添加 GOPATH,也可以在當(dāng)前項(xiàng)目的配置文件里配置 GOPATH。
設(shè)置正確的 GOPATH 后,VS Code就知道安裝 Go 的 package 保存到哪個(gè)文件夾內(nèi)了。
緊接著VS Code又跳出多個(gè)提示。這些提示是告訴你,如果想要在VS Code中使用自動(dòng)補(bǔ)全、代碼跳轉(zhuǎn)等功能,你需要安裝額外的 Go 的 package。所以,這里我建議選擇 Install All,之后如果你對(duì)某個(gè) package 的效果不滿(mǎn)意,也可以通過(guò)設(shè)置再進(jìn)行修改的。
比如,在我的系統(tǒng)上,我將 GOPATH 設(shè)置為 /Users/penlv/code/prototypes/gopath。然后選擇 Install All 后,我就能在輸出面板里,看到 Go 插件將要安裝的 packages。
不過(guò)值得注意的是,如果上面的安裝失敗了,輸出窗口中會(huì)提供錯(cuò)誤信息。因?yàn)?,這一步操作,底層運(yùn)行的命令行其實(shí)就是:
go get -u -v github.com/...
Go
像我就曾遇到了 Go 的版本太老,導(dǎo)致更新失敗的問(wèn)題。如果你遇到了自己無(wú)法解決的問(wèn)題,也可以到插件的 GitHub repository 留言,請(qǐng)注意要提供完整的信息,比如VS Code版本、插件版本以及 Go 的版本,以便更好地 toubleshoot。
首先,你可以在 Go 代碼中,進(jìn)行代碼跳轉(zhuǎn)(Go To Definition)、自動(dòng)補(bǔ)全(Auto Complete)以及獲取懸浮信息(Hover)。
Go 插件默認(rèn)是借助 gocode、gogetdoc和 godef 分析代碼,然后提供這些信息的。
在編寫(xiě) Go 代碼時(shí),經(jīng)常會(huì)用到go build、go tool vet、golint等腳本去構(gòu)建代碼,或者是對(duì)代碼進(jìn)行檢測(cè)。Go 插件已經(jīng)將這些功能集成到插件中了,你可以:
當(dāng)你使用這些參數(shù)來(lái)自動(dòng)觸發(fā)腳本時(shí),Go 插件會(huì)將這些腳本的輸出結(jié)果進(jìn)行分析,然后將錯(cuò)誤和警告放入到問(wèn)題面板中。
默認(rèn)情況下,當(dāng)保存代碼時(shí),VS Code會(huì)自動(dòng)給 Go 代碼進(jìn)行格式化。如果你不喜歡這個(gè)功能,也可以通過(guò) go.formatOnSave 來(lái)取消。
Go 插件同樣支持調(diào)試 Go 的代碼,而其底層的 debugger 則是 delve。如果你第一次使用 Go 插件時(shí)選擇了 Install All 安裝所有的 package,那么就無(wú)需再安裝任何的 package了。而如果你沒(méi)有全部安裝,那么你可能需要手動(dòng)安裝 dlv 這個(gè) package。
和之前我們介紹的 Node.js 調(diào)試一樣,如果沒(méi)有 launch.json 的話,VS Code會(huì)默認(rèn)調(diào)試當(dāng)前文件。
同樣,Go 插件也提供了多個(gè)調(diào)試的模板
VS Code的 Go 插件,默認(rèn)是使用 gocode、godef 等 package 來(lái)提供智能語(yǔ)言服務(wù)的。不過(guò) GO 插件中還有一個(gè)正在處于試驗(yàn)階段的 Language Server (也就是 LSP 的實(shí)現(xiàn)),你可以通過(guò)設(shè)置 go.useLanguageServer 將其打開(kāi)。但是這個(gè) Language Server 并不支持 Windows,且處于試驗(yàn)階段,關(guān)于更多的信息,請(qǐng)查看文檔
綜合我個(gè)人使用 Go 插件時(shí)候的體驗(yàn),以及 Go 插件維護(hù)者的分享,下面這些問(wèn)題是新用戶(hù)經(jīng)常會(huì)遇到的:
根據(jù)每年Go相關(guān)的 Survey 和官方數(shù)據(jù),Go 社區(qū)的新晉用戶(hù)更傾向于使用VS Code來(lái)進(jìn)行 Go 的編程。于是 Go 團(tuán)隊(duì)決定親自書(shū)寫(xiě)一套 Go 的 Language Server,以提升VS Code上 Go 的書(shū)寫(xiě)體驗(yàn)。上面我提到的 Language Server 是 SourceGraph 團(tuán)隊(duì)實(shí)現(xiàn)的,Go 團(tuán)隊(duì)可能不會(huì)基于它們的代碼進(jìn)行修改,而是重起爐灶。對(duì)于官方團(tuán)隊(duì)的投入,讓我對(duì) Go 在VS Code里前景非常有信心。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: