Vscode搭建go語言開發(fā)環(huán)境
解釋器
下載官網(wǎng):Downloads - The Go Programming Language (google.cn)
傻瓜式安裝,記住安裝路徑即可
終端中測試是否安裝成功:
bin: 存放編譯后的二進(jìn)制文件
**pkg:存放編譯后的包文件。 包文件擴(kuò)展名通常為xxx.a,即 .a **結(jié)尾。
src:存放Go語言包的源代碼
vscode中需要裝的插件
配置用戶變量及環(huán)境變量(重要)
環(huán)境變量
將go解釋器安裝位置的bin目錄放path里面(在系統(tǒng)變量中的Path中插入一條,Golang安裝目錄/bin)
用戶變量
添加用戶變量
GOPATH變量設(shè)置用戶工作目錄。如果寫代碼時(shí)要用到第三方庫,然后使用go get xxx時(shí),xxx就下載到這個(gè)目錄。
把系統(tǒng)自帶的\用戶變量\中的GOPATH刪除。因?yàn)樵新窂紺:\Users\xxx\go不是我們存放go代碼的地方。
變量 GOPATH 值 D:\interpreter\go\wrokspace
(這里填寫你的Golang工作目錄,用于保存相應(yīng)下載的包
添加后在命令行下使用go get -u xxx
就可以安裝第三方庫了
go get -u gorm.io\gorm
使用上面的命令之后就可以在D:\interpreter\go\bin\pkg\mod目錄下發(fā)現(xiàn)有個(gè)gorm.io的文件夾,下面有g(shù)orm文件夾
GOROOT變量設(shè)置Go編譯器的安裝位置
變量 GOROOT 值 D:\interpreter\go
(這里填寫你的Golang安裝目錄)
配置go的環(huán)境變量
在命令行下使用go env
命令可以看到所有關(guān)于go的環(huán)境變量。(查看Golang的環(huán)境)
由于go是google的產(chǎn)品,許多插件都是在國外,然而國內(nèi)訪問不了,所以要設(shè)置代理等配置
所以我們?cè)O(shè)置以下參數(shù)
go env -w GOPROXY=https://goproxy.io,direct
go env -w GOPRIVATE=*.corp.example.com
go env -w GO111MODULE=on
那些vscode中可能遇到的問題
例如報(bào)錯(cuò): (go: cannot find GOROOT directory: c:\go)
vscode終端快捷打開方式為:ctrl+shift+tab上那個(gè)鍵
如果以前安裝過golang,并且在vscode中用過
可能在一次安裝vscode的時(shí)候會(huì)按照原來的路徑找GOROOT
如圖第一次查看go語言環(huán)境是沒有成功的,但使用命令set GOROOT=D:\interpreter\go
手動(dòng)設(shè)置GOROOT就成功了
同理可設(shè)置GOPATH:(如下圖)
GO111MODULE
-
GO111MODULE介紹
GO111MODULE有三個(gè)值:off, on和auto(默認(rèn)值):
- GO111MODULE=off
go命令行將不會(huì)支持module功能,尋找依賴包的方式將會(huì)沿用舊版本的通過vendor目錄或者GOPATH模式來查找。 - GO111MODULE=on
go命令行會(huì)使用modules,不會(huì)去GOPATH目錄下查找。 - GO111MODULE=auto(默認(rèn)值)
go命令行將會(huì)根據(jù)當(dāng)前目錄來決定是否啟用module功能。下面兩種情形將啟用module功能:
a. 當(dāng)前目錄在GOPATH/src之外且該目錄包含go.mod文件
b. 當(dāng)前文件在包含go.mod文件的目錄下面。
- GO111MODULE=off
-
Windows系統(tǒng)中設(shè)置GO111MODULE
直接在環(huán)境變量中添加一個(gè)變量,變量名為GO111MODULE,變量值為on、off、auto中的一個(gè)。 -
使用 go env -w 設(shè)置GO111MODULE
當(dāng)按照的go版本大于等于1.13時(shí),可以直接使用go env -w 命令非常方便的設(shè)置變量。go env -w 命令在用戶級(jí)別修改變量,被修改的信息默認(rèn)保存在$HOME/.config/go/env文件中。
ps:1.16.5 版本,用 go env -w 也有不生效的情況。
#查看GO111MODULE的當(dāng)前值 go env #設(shè)置GO111MODULE的值 #開啟模塊支持,無論什么情況,go命令都會(huì)使用module go env -w GO111MODULE=on #關(guān)閉模塊支持,無論什么情況,go命令都不會(huì)使用module go env -w GO111MODULE=off #默認(rèn)值,go命令根據(jù)當(dāng)前目錄決定是否啟用module功能 #即當(dāng)前目錄在GOPATH/src之外且該目錄包含go.mod文件時(shí)開啟module功能;否則繼續(xù)使用GOPATH go env -w GO111MODULE=auto
GOPROXY
這里最重要的一項(xiàng)是要檢查GOPROXY的設(shè)置,GO語言是Google家的產(chǎn)品,所以不設(shè)置代理是代理后面安裝相關(guān)插件時(shí)是寸步難行(即使開梯子也沒有,必須設(shè)置代理)!
網(wǎng)上提供了一些代理:
go env -w GOPROXY=“https://goproxy.cn,direct”
go env -w GOPROXY=“https://goproxy.io”
go env -w GOPROXY=“https://mirrors.tencent.com/go/”
direct參數(shù)的作用是:當(dāng)https://goproxy.cn代理可以正常訪問時(shí),就優(yōu)先走代理下載依賴包。如果代理走不通或沒有這個(gè)包,就不使用代理,直接去找包的github源地址下載
GOPATH
Go語言是一個(gè)編譯型語言,有很多依賴包需要開發(fā)在打包過程編譯進(jìn)去。所以需要配置一個(gè)類似workspace的工作區(qū),也就是我定義好目錄,要在這個(gè)目錄下寫源代碼。
GOPATH境變量:用來表明你寫的go項(xiàng)目的存放路徑(工作目錄)。
在你想要項(xiàng)目的地方新建三個(gè)目錄src、bin、pkg效果如下
src: 存放源代碼
bin: 存放編譯后的二進(jìn)制文件
pkg:存放編譯后的包文件
最后在src里面新建一個(gè)文件夾,用vscode打開,直接打開終端執(zhí)行go mod init+項(xiàng)目名
就可以進(jìn)行代碼編寫啦(注意是在GO111MODULE=on的情況下)
初始化后是這樣的:
編譯執(zhí)行
先編譯再執(zhí)行
編譯
執(zhí)行
直接執(zhí)行
gin框架搭建
-
養(yǎng)成一個(gè)好習(xí)慣,在寫項(xiàng)目之前先初始化項(xiàng)目
go mod init 項(xiàng)目名 go mod tidy
-
go mod tidy命令的作用:
-
添加需要用到但go.mod中查不到的模塊,
-
刪除未使用的模塊
-
注意執(zhí)行時(shí)要和go mod&go sum 在同一路徑
-
-
安裝Gin框架
go get -u github.com/gin-gonic/gin
在你的文件夾中出現(xiàn)了.sum文件,說明安裝成功,接下來我們寫一個(gè)簡單程序,驗(yàn)證是否成功文章來源:http://www.zghlxwxcb.cn/news/detail-757993.html
package main import "github.com/gin-gonic/gin" func main() { // 創(chuàng)建一個(gè)默認(rèn)的路由引擎 r := gin.Default() // 配置路由 r.GET("/", func(c *gin.Context) { c.JSON(200, gin.H{ // c.JSON:返回 JSON 格式的數(shù)據(jù) "message": "Hello world!", }) }) r.Run() // 啟動(dòng) HTTP 服務(wù) } # go run main.go后打開127.0.0.1:8080成功顯示Hello world
-
go mod vendor
的功能是將新增的依賴包自動(dòng)寫入當(dāng)前項(xiàng)目的 vendor 目錄。文章來源地址http://www.zghlxwxcb.cn/news/detail-757993.html
到了這里,關(guān)于vscode中搭建go語言開發(fā)環(huán)境的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!