vscode安裝golang開發(fā)環(huán)境

[TOC]

注意:本文檔默認已經(jīng)安裝好go語言環(huán)境且已經(jīng)設(shè)置好相應(yīng)環(huán)境變量

1. 安裝vscode

根據(jù)自身系統(tǒng)下載相應(yīng)環(huán)境的vscode并安裝

下載地址:點擊此處前往下載

2. 安裝go擴展插件

在vscode的插件商店里可以直接下載go語言的相關(guān)插件,可采用以下幾種方式

  • 新建一個后綴為.go 的后綴文件,此時vscode會自動彈出提示問是否需要安裝擴展,點擊安裝即可
image.png
  • 點擊左側(cè)第五個菜單欄,即可進入vscode插件商店,輸入go后搜索,選搜索結(jié)果第一個安裝即可
image.png
  • 輸入Ctrl+Shift+XCmd+Shift+X 打開vscode擴展商店,同上一種方法輸入go后搜索,選搜索結(jié)果第一個安裝即可

3. 安裝go tools工具

當vscode go語言擴展插件裝好后,打開go文件會彈出如下提示

image.png

點擊上邊的安裝全部即可,如果沒有彈出該提示,也可點擊右下角的Analysis Tools Missing,然后同意安裝即可。這幾個工具的主要作用如下:

go get -u -v github.com/ramya-rao-a/go-outline

解析go文件中的函數(shù)定義,結(jié)構(gòu)體定義,依賴的包等信息并以json格式的數(shù)據(jù)輸出,用于生成符號表

go get -u -v github.com/acroca/go-symbols

搜索指定目錄的符號表中指定的符號

go get -u -v github.com/nsf/gocode

自動填充提示

go get -u -v github.com/rogpeppe/godef

尋找指定符號在go文件中的位置

go get -u -v golang.org/x/tools/cmd/godoc

根據(jù)源碼注釋生成文檔

go get -u -v github.com/zmb3/gogetdoc

解析go源碼,收集注釋的位置,類似于go-outline,從而到達在文件中直接定位注釋位置的目的

go get -u -v github.com/golang/lint/golint

類似pylint,用以檢查代碼規(guī)范

go get -u -v github.com/fatih/gomodifytags

提供tags管理,可以對struct的tag增刪改

go get -u -v github.com/uudashr/gopkgs/cmd/gopkgs

列出可導(dǎo)入的包列表,主要用于包導(dǎo)入時的提示功能

go get -u -v golang.org/x/tools/cmd/gorename

用于安全的修改名稱(對引用到的地方也同步修改)

go get -u -v github.com/cweill/gotests/...

用于用例測試

go get -u -v sourcegraph.com/sqs/goreturns

當函數(shù)定義有返回值但返回值未設(shè)置時,自動添加返回對應(yīng)類型的默認值

go get -u -v golang.org/x/tools/cmd/guru

代碼編輯器集成工具,用于智能顯示一些提示

go get -u -v github.com/josharian/impl

自動生成接口實現(xiàn)代碼框架的工具,比如impl ‘f *File’ io.ReadWriteCloser 會自動出現(xiàn)io.ReadWriteCloser需要實現(xiàn)的接口

go get -u -v github.com/haya14busa/goplay/cmd/goplay

可以理解為https://play.golang.org/ 的一個客戶端,可以將代碼發(fā)送到https://play.golang.org/執(zhí)行

以上工具都已經(jīng)被golang擴展插件集成進去了,不需要自己手動去使用,只需要通過配置控制即可,具體的配置項可參考后面的 配置項目工程

有些工具第一次安裝可能會失敗,后面會給出詳細的原因,大都是因為依賴庫被墻的原因,如圖所示:

image.png

從錯誤原因可以看出,無法下載的庫都是golang.org/x/tools, 這是因為golang.org被墻的原因,此時最好的方案是翻墻,如果沒有翻墻條件,由于go語言開發(fā)者將這些庫在github上做了鏡像,我們也可直接去github上手動下載這些庫,具體操作如下:

1. 前往go語言的github官方倉庫,選擇所需要的庫手動下載或通過,此處我們?nèi)钡氖莟ools庫,因此下載tools即可](https://github.com/golang,選擇所需要的庫下載,此處我們?nèi)钡氖莟ools庫,因此下載tools即可)

2. 在GOPATH的src目錄下,新建golang.org/x/tools的目錄,可將tools軟鏈接到下載的tools目錄,也可直接將下載的tools目錄放到golang.org/x目錄下

3. 再次安裝go tools工具,此時如無意外剩下的幾個包已經(jīng)可以成功安裝

image.png

4. 安裝delve調(diào)試工具

golang官方推薦的調(diào)試例子默認為gdb,但是gdb調(diào)試go程序會遇到goroutine的各類問題,因此現(xiàn)在一般推薦用delve,安裝方法如下:

  • 對于windows系統(tǒng),直接使用go get即可
$ go get github.com/derekparker/delve/cmd/dlv
  • 對于linux系統(tǒng)也類似,只不過get安裝后可再將二進制文件拷貝到系統(tǒng)bin目錄
$ go get github.com/derekparker/delve/cmd/dlv
$ cd github.com/derekparker/delve
$ make install
  • mac系統(tǒng)有兩種方式,第一種是直接通過brew安裝
$ brew install go-delve/delve/delve

但是這種方式目前不支持mac最新的macOS 10.13,第二種方式同上,直接通過go get方式安裝,只不過安裝前需要先安裝xcode的develop tools

$ xcode-select --install
$ go get -u github.com/derekparker/delve/cmd/dlv
$ cd github.com/derekparker/delve
$ make install

<span id="workspace_config">5. 配置項目工程</span>

go語言擴展插件有許多個性化配置,可以通過首選項設(shè)置-->設(shè)置看到所有支持的設(shè)置項,如下圖

image.png

當需要修改配置項時,只需要在右邊的用戶設(shè)置或工作區(qū)設(shè)置中填入即可覆蓋默認配置,用戶設(shè)置和工作區(qū)設(shè)置的區(qū)別在于,如果想要配置項針對所有的包括未來新建的工程都生效,那么配置在用戶設(shè)置,如果僅僅需要針對當前工程進行設(shè)置,那么寫入工作區(qū)設(shè)置。這里簡單介紹幾個配置項。

{
  "go.buildOnSave": "workspace",
  "go.lintOnSave": "workspace",
  "go.vetOnSave": "workspace",
  "go.buildFlags": [],
  "go.lintFlags": [],
  "go.vetFlags": [],
  "go.coverOnSave": false,
  "go.useCodeSnippetsOnFunctionSuggest": false,
  "go.formatOnSave": true,
  "go.formatTool": "goreturns",
  "go.goroot": "C:/Go",
  "go.gopath": "C:/gopath"
}
  • go.buildOnSave: 當保存時自動編譯,可選項為 ‘workspace’、‘package’、‘off',分別表示自動編譯工作區(qū),自動編譯包和關(guān)閉
  • go.lintOnSave: 當保存時靜態(tài)檢查,可選項為'workspace'、'package'、‘off’,含義同上
  • go.vetOnSave
  • go.buildFlags: 編譯選項
  • go.lintFlags: 代碼靜態(tài)檢查選項
  • go.coverOnSave: 若為true,將自動使用 go test -coverprofile執(zhí)行用例測試
  • go.useCodeSnippetsOnFunctionSuggest 是否自動填充函數(shù)參數(shù)以及括號等
  • go.formatOnSave: 保存時自動格式化代碼
  • go.formatTool: 格式化代碼時使用的插件工具,可選項為gofmt, goimport, goreturns
  • go.goroot: 設(shè)置GOROOT環(huán)境變量,當環(huán)境變量已經(jīng)設(shè)置時可不配置
  • go.gopath: 本配置項將覆蓋環(huán)境變量中的GOPATH,需要格外注意
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容