手把手教你導(dǎo)入Go語(yǔ)言第三方庫(kù)
最好的學(xué)習(xí)方式就是實(shí)踐。 我們通過(guò)導(dǎo)入gin包來(lái)深入學(xué)習(xí)。
環(huán)境
- go 1.13.5
- goland 2019.3.1
- manjaro-gnome3.34.2
環(huán)境變量
首先回想一下,我們安裝goland的時(shí)候,設(shè)置了幾個(gè)比較重要的環(huán)境變量,也就是GOROOT和GOPATH。
GOROOT比較容易理解。也就是我們go語(yǔ)言的安裝目錄,標(biāo)準(zhǔn)庫(kù)什么的就放在里面的。在linux中的話,默認(rèn)安裝到/usr/lib/go中,我們創(chuàng)建項(xiàng)目時(shí)選擇的SDK也就是這個(gè)。

GOPATH可以理解為工作目錄。GOPATH指定的目錄下一般有三個(gè)子目錄。如下:
GOPATH //go工作目錄 | |--bin //編譯后生成的可執(zhí)行文件 | |--pkg //編譯后生成的包/庫(kù)文件 | |--src //項(xiàng)目的源代碼文件
bin目錄容易理解,而pkg包就是放第三方庫(kù)的地方,像go get后的包就在里面。src目錄就是放項(xiàng)目源代碼的,一般都是把多個(gè)項(xiàng)目都放到src目錄下,然后對(duì)這些項(xiàng)目統(tǒng)一管理,也就是共用bin和pkg,如果在不同目錄放項(xiàng)目,然后把這些項(xiàng)目都放到GOPATH中,顯然會(huì)有沖突。故一般都不推薦這么做。
我們可以在終端中輸入go env查看環(huán)境變量,下面是我的配置目錄:


實(shí)踐導(dǎo)包
現(xiàn)在我們先創(chuàng)建一個(gè)新項(xiàng)目,實(shí)際嘗試一下。

然后新建一個(gè)main文件,輸入:
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run()
}
再打開(kāi)終端,輸入go mod init, 直接跑一下,會(huì)發(fā)現(xiàn)直接在下載import的包了,這時(shí)候如果直接跑的話,是發(fā)現(xiàn)能直接跑的,但是發(fā)現(xiàn)報(bào)紅, 輸入也不會(huì)自動(dòng)補(bǔ)全。

這時(shí)候只需打開(kāi)setting,把go mod打勾,如下。然后直接跑一下,或者重新打開(kāi)ide因該就不會(huì)報(bào)紅了。

當(dāng)然我們也可以手動(dòng)自己下載,只需使用go get命令。
go get -u github.com/gin-gonic/gin
但是發(fā)現(xiàn)根本沒(méi)有反應(yīng),輸入go env查看發(fā)現(xiàn)有個(gè)變量叫GO111MODULE,這玩意是干什么的呢, 是用來(lái)配置go mod用的,比如什么時(shí)候到go path,goroot去找,或者直接在go mod中找。一共有三個(gè)狀態(tài)。
GO111MODULE=auto, 這個(gè)是默認(rèn)值,根據(jù)一些情況自動(dòng)判斷是否打開(kāi)go mod。GO111MODULE=on,打開(kāi)go modGO111MODULE=off關(guān)閉go mod
于是我們輸入go env -w GO111MODULE=on打開(kāi)go mod,再次輸入go get -u github.com/gin-gonic/gin,但是會(huì)發(fā)現(xiàn)下載的速度簡(jiǎn)直感人,這是因?yàn)榉?wù)器在國(guó)外的嘛,你懂得,我們可以設(shè)置代理。
go env -w GOPROXY=https://goproxy.cn,direct
再次go get,發(fā)現(xiàn)速度飛起,嘗試run一下,如果出現(xiàn)報(bào)紅問(wèn)題,像上面那樣解決一下。
當(dāng)然我們也可以項(xiàng)目放到GOPATH目錄以外。如下

同樣的,如果要導(dǎo)包的話,像上面那樣使用go mod就行了。
我們可以進(jìn)入GOPATH目錄下的pkg目錄,會(huì)發(fā)現(xiàn)我們導(dǎo)入的包在這里面的。

我們也可以進(jìn)入goland,

發(fā)現(xiàn)外部庫(kù)有兩個(gè),一個(gè)是SDK,也就是go的安裝目錄(GOROOT),標(biāo)準(zhǔn)庫(kù)就在這里的。另一個(gè)是go mod,就是我們剛剛導(dǎo)入的,放到GOPATH/pkg下的包。
到此這篇關(guān)于手把手教你導(dǎo)入Go語(yǔ)言第三方庫(kù)的文章就介紹到這了,更多相關(guān)Go導(dǎo)入第三方庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Go編寫(xiě)定時(shí)器與定時(shí)任務(wù)詳解(附第三方庫(kù)gocron用法)
- go第三方庫(kù)sqlx操作MySQL及ORM原理
- Go 第三方庫(kù)之類型轉(zhuǎn)換問(wèn)題
- golang gopm get -g -v 無(wú)法獲取第三方庫(kù)的解決方案
- golang 輸出重定向:fmt Log,子進(jìn)程Log,第三方庫(kù)logrus的詳解
- 使用Cargo工具高效創(chuàng)建Rust項(xiàng)目
- Go代碼檢查的推薦工具及使用詳解
- Go語(yǔ)言包管理工具Godep的用法
- golang構(gòu)建工具M(jìn)akefile使用詳解
- Go日常開(kāi)發(fā)常用第三方庫(kù)和工具介紹
相關(guān)文章
一步步教你在Linux上安裝Go語(yǔ)言環(huán)境
本文將介紹如何在Linux操作系統(tǒng)下搭建Go語(yǔ)言環(huán)境,Go語(yǔ)言是一種開(kāi)源的編程語(yǔ)言,具有高效、簡(jiǎn)潔和并發(fā)性強(qiáng)的特點(diǎn),適用于開(kāi)發(fā)各種類型的應(yīng)用程序,搭建Go語(yǔ)言環(huán)境是開(kāi)始學(xué)習(xí)和開(kāi)發(fā)Go語(yǔ)言項(xiàng)目的第一步,本文將詳細(xì)介紹安裝Go語(yǔ)言、配置環(huán)境變量以及驗(yàn)證安裝是否成功的步驟2023-10-10
Go語(yǔ)言kylin任務(wù)自動(dòng)化實(shí)例詳解
這篇文章主要為大家介紹了Go語(yǔ)言kylin任務(wù)自動(dòng)化實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
詳解如何利用GORM實(shí)現(xiàn)MySQL事務(wù)
為了確保數(shù)據(jù)一致性,在項(xiàng)目中會(huì)經(jīng)常用到事務(wù)處理,對(duì)于MySQL事務(wù)相信大家應(yīng)該都不陌生。這篇文章主要總結(jié)一下在Go語(yǔ)言中Gorm是如何實(shí)現(xiàn)事務(wù)的;感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助2022-09-09
golang調(diào)用藍(lán)兔支付實(shí)現(xiàn)網(wǎng)上支付功能
支付寶、微信的網(wǎng)上支付需要營(yíng)業(yè)執(zhí)照個(gè)人無(wú)法直接使用,如果個(gè)人需要實(shí)現(xiàn)網(wǎng)上支付功能,目前大部分應(yīng)該是都是依賴第三方聚合支付來(lái)實(shí)現(xiàn),本文就來(lái)介紹一下如何調(diào)用藍(lán)兔支付實(shí)現(xiàn)網(wǎng)上支付功能,有需要的可以參考下2023-09-09

