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

[TOC]

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

1. 安裝vscode

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

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

2. 安裝go擴展插件

在vscode的插件商店里可以直接下載go語言的相關插件走孽,可采用以下幾種方式

  • 新建一個后綴為.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

列出可導入的包列表隧枫,主要用于包導入時的提示功能

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ù)定義有返回值但返回值未設置時喉磁,自動添加返回對應類型的默認值

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語言擴展插件有許多個性化配置姜挺,可以通過首選項設置-->設置看到所有支持的設置項齿税,如下圖

image.png

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

{
  "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ū),自動編譯包和關閉
  • 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: 設置GOROOT環(huán)境變量坊谁,當環(huán)境變量已經(jīng)設置時可不配置
  • go.gopath: 本配置項將覆蓋環(huán)境變量中的GOPATH费彼,需要格外注意
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市口芍,隨后出現(xiàn)的幾起案子箍铲,更是在濱河造成了極大的恐慌,老刑警劉巖鬓椭,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颠猴,死亡現(xiàn)場離奇詭異关划,居然都是意外死亡,警方通過查閱死者的電腦和手機翘瓮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門贮折,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人资盅,你說我怎么就攤上這事调榄。” “怎么了呵扛?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵每庆,是天一觀的道長。 經(jīng)常有香客問我择份,道長扣孟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任荣赶,我火速辦了婚禮凤价,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拔创。我一直安慰自己利诺,他們只是感情好,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布剩燥。 她就那樣靜靜地躺著慢逾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪灭红。 梳的紋絲不亂的頭發(fā)上侣滩,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機與錄音变擒,去河邊找鬼君珠。 笑死,一個胖子當著我的面吹牛娇斑,可吹牛的內(nèi)容都是我干的策添。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼毫缆,長吁一口氣:“原來是場噩夢啊……” “哼唯竹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起苦丁,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤浸颓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猾愿,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡鹦聪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年账阻,在試婚紗的時候發(fā)現(xiàn)自己被綠了蒂秘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡淘太,死狀恐怖姻僧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蒲牧,我是刑警寧澤撇贺,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站冰抢,受9級特大地震影響松嘶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挎扰,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一翠订、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遵倦,春花似錦尽超、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掠哥,卻和暖如春巩踏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背续搀。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工塞琼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人目代。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓屈梁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親榛了。 傳聞我的和親對象是個殘疾皇子在讶,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348