Golang中Model的具體使用
導(dǎo)語(yǔ)
我們都知道在Golang中我們一般都是設(shè)置GOPATH目錄,這個(gè)目錄主要存放我們的第三方包,這個(gè)方式一直不是很方便,今天給大家介紹Go 1.11版本中推出的GoModul使用方法,學(xué)過(guò)java的同學(xué),可能對(duì)maven包有所了解,Model的包管理類(lèi)似于這種方式。
使用之前的準(zhǔn)備
在安裝Go版本后,這個(gè)功能默認(rèn)是關(guān)閉的,需要我們手動(dòng)設(shè)置環(huán)境變量進(jìn)行開(kāi)啟,設(shè)置方式如下
//go命令行將不會(huì)支持module功能 O111MODULE=off //go命令行會(huì)使用modules,而一點(diǎn)也不會(huì)去GOPATH目錄下查找。 GO111MODULE=on //自動(dòng)進(jìn)行 GO111MODULE=auto
開(kāi)始使用
為了更加直觀的看到model使用之后的好處,建議在GOPATH目錄之外進(jìn)行創(chuàng)建一個(gè)目錄進(jìn)行練習(xí),首先我們創(chuàng)建如下目錄結(jié)構(gòu):
main.go
package main import ( log "github.com/sirupsen/logrus" ) func main() { log.WithFields(log.Fields{ "animal": "walrus", }).Info("A walrus appears") }
接著我們用go mod命令初始化我們的目錄
go mod init main
運(yùn)行成功后我們會(huì)看到在我們的目錄結(jié)構(gòu)中出現(xiàn)了go.mod的文件
module main go 1.12
現(xiàn)在我們開(kāi)始直接運(yùn)行我們的代碼執(zhí)行命令
go run ./main
在控制臺(tái)會(huì)出現(xiàn)如下輸出,這些輸出便是將需要的包進(jìn)行版本下載同時(shí)顯示了我們的程序代碼的輸出
并且在我們的目錄結(jié)構(gòu)中同時(shí)又添加了一個(gè)文件go.sum如下圖所示存放著我們包的具體信息
發(fā)布版本引用自己封裝的包
有時(shí)候我們自己寫(xiě)了一個(gè)包,包中提供了一些公用的方法,應(yīng)該如何利用model進(jìn)行管理呢首先我們創(chuàng)建如下目錄
add.go
package common func Add(a, b int64) int64 { return a + b }
現(xiàn)在我們開(kāi)始初始化mod在我們的主目錄使用如下方式
go mod init github.com/yuwe1/modpratice
然后使用git初始化我們的倉(cāng)庫(kù)
git init git remote add origin git@github.com:yuwe1/modpratice.git git add demo2/ go.mod git commit -am "add Add func" git push --tags git push -u origin master
倉(cāng)庫(kù)顯示如下:
現(xiàn)在讓我們創(chuàng)建另一個(gè)目錄
main.go
package main import ( "fmt" "github.com/yuwe1/modpratice/demo2/common" ) func main() { fmt.Println(common.Add(1, 2)) }
使用如下命令
go mod init main go run ./main
顯示結(jié)果如下:【成功顯示出了我們最終的結(jié)果?!?/p>
修改版本
在上面的使用中我們成功的引用了自己的代碼,但是如果我們倉(cāng)庫(kù)的代碼進(jìn)行了升級(jí),我們進(jìn)行了修改之后,又該如何引用最新的代碼呢比如修改Add函數(shù)
package common import ( "fmt" ) func Add(a, b int64) int64 { fmt.Println("修改了Add函數(shù)") return a + b }
此時(shí)我們只需要添加一個(gè)新的版本就行了命令如下
git add ../demo2/common/add.go git commit -m "fix Add and add hello" git tag v1.0.1 git push --tags origin master
最終我們看到了倉(cāng)庫(kù)多了一個(gè)版本
現(xiàn)在我們使用最新的版本,直接go get 命令如下
go get github.com/yuwe1/modpratice@v1.0.1
我們首先看一下go.sum里的文件,可以看到多了一個(gè)版本
現(xiàn)在我們重新運(yùn)行,會(huì)發(fā)現(xiàn)輸出的結(jié)果已經(jīng)發(fā)生了改變。
Go Model的其它命令
go mod tidy //拉取缺少的模塊,移除不用的模塊。 go mod download //下載依賴(lài)包 go mod graph //打印模塊依賴(lài)圖 go mod vendor //將依賴(lài)復(fù)制到vendor下 go mod verify //校驗(yàn)依賴(lài) go mod why //解釋為什么需要依賴(lài) go list -m -json all //依賴(lài)詳情
到此這篇關(guān)于Golang中Model的具體使用的文章就介紹到這了,更多相關(guān)Golang Model使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Golang map range遍歷結(jié)果不穩(wěn)定問(wèn)題
這篇文章主要介紹了解決Golang map range遍歷結(jié)果不穩(wěn)定問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式
這篇文章主要介紹了Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11golang中strconv.ParseInt函數(shù)用法示例
這篇文章主要介紹了golang中strconv.ParseInt函數(shù)用法,實(shí)例分析了strconv.ParseInt函數(shù)將字符串轉(zhuǎn)換為數(shù)字的簡(jiǎn)單使用方法,需要的朋友可以參考下2016-07-07簡(jiǎn)單談?wù)凣olang中的字符串與字節(jié)數(shù)組
這篇文章主要給大家介紹了關(guān)于Golang中字符串與字節(jié)數(shù)組的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Golang具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03一文帶你了解Golang中reflect反射的常見(jiàn)錯(cuò)誤
go?反射的錯(cuò)誤大多數(shù)都來(lái)自于調(diào)用了一個(gè)不適合當(dāng)前類(lèi)型的方法,?而且,這些錯(cuò)誤通常是在運(yùn)行時(shí)才會(huì)暴露出來(lái),而不是在編譯時(shí),如果我們傳遞的類(lèi)型在反射代碼中沒(méi)有被覆蓋到那么很容易就會(huì)?panic。本文就介紹一下使用?go?反射時(shí)很大概率會(huì)出現(xiàn)的錯(cuò)誤,需要的可以參考一下2023-01-01Go遍歷struct,map,slice的實(shí)現(xiàn)
本文主要介紹了Go語(yǔ)言遍歷結(jié)構(gòu)體、切片和字典的方法,對(duì)大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06Go語(yǔ)言異常處理error、panic、recover的使用
GO語(yǔ)言中引入的異常的處理方式為error、panic、recover ,本文主要介紹了Go語(yǔ)言異常處理error、panic、recover的使用,感興趣的可以了解一下2024-08-08