2019-10-16

本文默認(rèn)已經(jīng)安裝好Go語(yǔ)言開發(fā)包以及VScode軟件

# 1 - 系統(tǒng)環(huán)境

系統(tǒng)/用戶環(huán)境變量

  • GOROOT Go 源碼存放目錄茬祷,如果是msi 安裝包則默認(rèn)為 c:/go。
  • GOPATH Go 項(xiàng)目/工程的工作區(qū)意推,它包含 3 個(gè)主要目錄(目錄名均為小寫)
    • bin 編譯/構(gòu)建后笛厦,可執(zhí)行文件目錄铆铆。(Executable File)
    • pkg 歸檔文件目錄。(Archive File)
    • src 項(xiàng)目/工程的源碼文件目錄傀顾。(Source File)
  • GOCACHE Go 命令將在其中存儲(chǔ)緩存信息以供將來生成時(shí)重復(fù)使用的目錄襟铭。
  • GOTMPDIR Go 命令將在其中寫入臨時(shí)源文件、軟件包和二進(jìn)制文件的目錄短曾。
    這里就不重復(fù)說明如何配置 Go 開發(fā)環(huán)境了寒砖。

2 - GoProxy 配置

由于國(guó)內(nèi)網(wǎng)絡(luò)環(huán)境限制,建議先配置GoProxy環(huán)境變量嫉拐,當(dāng)然不配置也行哩都,你能正常訪問 golang.org/ 網(wǎng)址也行。\

推薦使用go mod管理項(xiàng)目
在安裝好Go運(yùn)行環(huán)境后婉徘,Windows系統(tǒng)可以打開cmd或者powershell (macOSLinux系統(tǒng)打開終端)漠嵌,分別輸入以下命令

# 啟用 go mod
go env -w GO111MODULE=on
# 設(shè)置 Go Proxy 代理
go env -w GOPROXY=https://goproxy.io,direct
image.png
image.png

3 - VScode 安裝 Go 插件

image.png

我的已經(jīng)安裝過了,安裝時(shí)正常點(diǎn)擊右側(cè)的安裝按鈕即可

4 - VSCode 安裝 Go 工具包

Go 工具包包含了一些格式化盖呼、代碼檢查等功能

  1. Ctrl+Shift+P (Windows環(huán)境)儒鹿,或者選擇 "查看" -> "命令面板"
    image.png
  2. 我們?cè)谶@個(gè)輸入框中輸入>go:install,下面會(huì)自動(dòng)搜索相關(guān)命令几晤,我們選擇Go:Install/Update Tools這個(gè)命令
    image.png
  3. 選中并會(huì)回車執(zhí)行該命令(或者使用鼠標(biāo)點(diǎn)擊該命令)
image.png
image.png
image.png

VS Code此時(shí)會(huì)下載并安裝上圖列出來的16個(gè)工具约炎,但是由于國(guó)內(nèi)的網(wǎng)絡(luò)環(huán)境基本上都會(huì)出現(xiàn)安裝失敗,如出現(xiàn)各種FAILED

有兩種方法解決這個(gè)問題:

5.1 方法一:使用git下載源代碼再安裝

我們可以手動(dòng)從github上下載工具蟹瘾,(執(zhí)行此步驟前提需要你的電腦上已經(jīng)安裝了git)

第一步:現(xiàn)在自己的GOPATHsrc目錄下創(chuàng)建golang.org/x目錄
第二步:在終端/cmdcdGOPATH/src/golang.org/x目錄下
第三步:執(zhí)行git clone https://github.com/golang/tools.git tools命令
第四步:執(zhí)行git clone https://github.com/golang/lint.git命令
第五步:按下Ctrl/Command+Shift+P再次執(zhí)行Go:Install/Update Tools命令圾浅,在彈出的窗口全選并點(diǎn)擊確定,這一次的安裝都會(huì)SUCCESSED了憾朴。\

git clone https://github.com/golang/tools.git tools
go install github.com/ramya-rao-a/go-outline
go install github.com/cweill/gotests/gotests
go install github.com/josharian/impl
go install github.com/acroca/go-symbols
go install golang.org/x/tools/cmd/guru
go install golang.org/x/tools/cmd/gorename
go install github.com/rogpeppe/godef
go install github.com/sqs/goreturns
go install github.com/golang/lint/golint

經(jīng)過上面的步驟就可以安裝成功了狸捕。

5.2安裝失敗解決辦法 使用go mod 代理安裝

# Go 1.13 及以上(推薦)

# Windows執(zhí)行
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

# Windows PowerShell 執(zhí)行 
$env:GO111MODULE = "on"
$env:GOPROXY = "https://goproxy.cn"

# macOS 或 Linux 執(zhí)行
export GO111MODULE=on
export GOPROXY=https://goproxy.cn

# 或者  macOS 或 Linux 執(zhí)行
echo "export GO111MODULE=on" >> ~/.profile
echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
source ~/.profile

手動(dòng)安裝

golang.org/x/

  • 首先進(jìn)入GOPATH目錄, 如果不知道在哪众雷, 使用 go env 可以查看
  • 然后進(jìn)入到 src/golang.org/x/ 目錄灸拍, 如果沒有可自行創(chuàng)建 mkdir -p src/golang.org/x
    分別將支持包 clone 下來。
git clone https://github.com/golang/tools.git (工具集以及包源代碼)
git clone https://github.com/golang/lint.git (lint 大家都不陌生了)
git clone https://github.com/golang/mod.git (mod 模塊支持)
git clone https://github.com/golang/xerrors.git (錯(cuò)誤值轉(zhuǎn)換包)
git clone https://github.com/golang/net.git

之后進(jìn)入到 GOPATH根目錄报腔; 使用 go get -u -v 命令將以上失敗中的 github.com 相關(guān)的命令執(zhí)行一遍

go get -u -v github.com/mdempsky/gocode
go get -u -v github.com/uudashr/gopkgs/v2/cmd/gopkgs
go get -u -v github.com/ramya-rao-a/go-outline
go get -u -v github.com/acroca/go-symbols
go get -u -v github.com/cweill/gotests/...
go get -u -v github.com/fatih/gomodifytags
go get -u -v github.com/josharian/impl
go get -u -v github.com/davidrjenni/reftools/cmd/fillstruct
go get -u -v github.com/haya14busa/goplay/cmd/goplay
go get -u -v github.com/godoctor/godoctor
go get -u -v github.com/go-delve/delve/cmd/dlv
go get -u -v github.com/stamblerre/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/sqs/goreturns

無法正常使用 go get 安裝時(shí)使用 clone 并通過 go install 方式安裝株搔,注意要在 %GOPATH% 下使用命令剖淀。

go get -u -v github.com/sqs/goreturns (無法正常安裝時(shí)使用以下命令)
git clone https://github.com/sqs/goreturns.git
go install github.com/sqs/goreturns.git
go get -u -v github.com/josharian/impl (無法正常安裝時(shí)使用以下命令)
git clone https://github.com/josharian/impl.git 
go install github.com/josharian/impl (該支持模塊只支持 x64 版本纯蛾,千萬注意系統(tǒng)版本和 Golang 版本)
go get -u -v github.com/go-delve/delve/cmd/dlv (無法正常安裝時(shí)使用以下命令)
git clone https://github.com/go-delve/delve.git (go-delve 目錄需要手動(dòng)創(chuàng)建,然后將 delve 放進(jìn)去)
go install github.com/go-delve/delve/cmd/dlv

gocode使用說明

go 語(yǔ)法與自動(dòng)補(bǔ)全纵隔,gocode-gomod 需要使用 VS Code 提示安裝完成翻诉。
https://github.com/stamblerre/gocode.git (支持模塊炮姨,目前該模塊有問題,不建議使用)
go get -u -v github.com/stamblerre/gocode
https://github.com/mdempsky/gocode.git (Go > 1.8 不支持模塊)
go get -u -v github.com/mdempsky/gocode
https://github.com/nsf/gocode.git (舊版本碰煌,且不再維護(hù))
go get -u -v github.com/nsf/gocode

其他包 (install || import)

需要 install 或者 import 來進(jìn)行使用舒岸,但更推薦使用 install 方式。安裝方式同上芦圾。

git clone https://github.com/golang/net.git (網(wǎng)絡(luò)包)
git clone https://github.com/golang/sync.git (同步/原子包)
git clone https://github.com/golang/crypto.git (加密包)
git clone https://github.com/golang/debug.git (debug 工具包)
git clone https://github.com/golang/oauth2.git (oauth2 認(rèn)證包)
git clone https://github.com/golang/protobuf.git (protobuf 協(xié)議包)

以上為額外的且常用的一些功能的源碼擴(kuò)展包蛾派,如有需要可以考慮使用,當(dāng)然也可以使用第三方包實(shí)現(xiàn)个少。

F5 調(diào)試運(yùn)行

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "GoLaunch",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "remotePath": "",
            "port": 6666,
            "host": "127.0.0.1",
            "program": "${fileDirname}//main.go", // 將 main.go 換成你的文件名
            "env": {
                "GOPATH": "D:/Go/workplace/",    // 你的GOPATH
                "GOROOT": "D:/Go/"           // GOROOT洪乍,GO的安裝目錄
            },
            "args": [],
            //"showLog": true
        }
    ]
}

第一個(gè)GO程序

在D:/Go/workplace/的src目錄下,創(chuàng)建test子目錄
2夜焦、在vs code中打開test子目錄
3壳澳、在vs code中新建一個(gè)文件,保存為test.go
4茫经、在cmd狀態(tài)下巷波,在test子目錄,輸入go run test.go同樣卸伞,能看到程序運(yùn)行結(jié)果\

package main

import "fmt"
func main() {
    fmt.Println("Hello World!")
}

補(bǔ)充內(nèi)容

  1. guru 和 gogetdoc 都是代碼描述提示抹镊,建議使用 gogetdoc
  2. godoctor 可以使用是 golint
  3. goimports 和 goreturns 是格式化和包引用管理,建議使用 goreturns

至此 VSCode 配置Go語(yǔ)言開發(fā)環(huán)境荤傲,搭建完成髓考!
接下來就可以使用 VSCode 愉快的編寫 Go 代碼了!

參考:
配置Visual Studio Code Go 開發(fā) | Microsoft Docs

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弃酌,一起剝皮案震驚了整個(gè)濱河市氨菇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妓湘,老刑警劉巖查蓉,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異榜贴,居然都是意外死亡豌研,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門唬党,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹃共,“玉大人,你說我怎么就攤上這事驶拱∷。” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蓝纲,是天一觀的道長(zhǎng)阴孟。 經(jīng)常有香客問我晌纫,道長(zhǎng),這世上最難降的妖魔是什么永丝? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任锹漱,我火速辦了婚禮,結(jié)果婚禮上慕嚷,老公的妹妹穿的比我還像新娘哥牍。我一直安慰自己,他們只是感情好喝检,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布砂心。 她就那樣靜靜地躺著,像睡著了一般蛇耀。 火紅的嫁衣襯著肌膚如雪辩诞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天纺涤,我揣著相機(jī)與錄音译暂,去河邊找鬼。 笑死撩炊,一個(gè)胖子當(dāng)著我的面吹牛外永,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拧咳,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伯顶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了骆膝?” 一聲冷哼從身側(cè)響起祭衩,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阅签,沒想到半個(gè)月后掐暮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡政钟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年路克,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片养交。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡精算,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碎连,到底是詐尸還是另有隱情灰羽,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站谦趣,受9級(jí)特大地震影響疲吸,放射性物質(zhì)發(fā)生泄漏座每。R本人自食惡果不足惜前鹅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望峭梳。 院中可真熱鬧舰绘,春花似錦、人聲如沸葱椭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)孵运。三九已至秦陋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間治笨,已是汗流浹背驳概。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旷赖,地道東北人顺又。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像等孵,于是被迫代替她去往敵國(guó)和親稚照。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容