Golang中Model的具體使用
導(dǎo)語(yǔ)
我們都知道在Golang中我們一般都是設(shè)置GOPATH目錄,這個(gè)目錄主要存放我們的第三方包,這個(gè)方式一直不是很方便,今天給大家介紹Go 1.11版本中推出的GoModul使用方法,學(xué)過(guò)java的同學(xué),可能對(duì)maven包有所了解,Model的包管理類似于這種方式。
使用之前的準(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í)候我們自己寫了一個(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 //下載依賴包 go mod graph //打印模塊依賴圖 go mod vendor //將依賴復(fù)制到vendor下 go mod verify //校驗(yàn)依賴 go mod why //解釋為什么需要依賴 go list -m -json all //依賴詳情
到此這篇關(guān)于Golang中Model的具體使用的文章就介紹到這了,更多相關(guān)Golang Model使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
GoZero中make后返回?cái)?shù)據(jù)與原數(shù)據(jù)不對(duì)齊的幾種解決方案
在Go語(yǔ)言中,make是用來(lái)創(chuàng)建切片、映射(map)和通道(channel)的內(nèi)建函數(shù),但是,在使用 make 創(chuàng)建切片時(shí),若不理解如何正確使用其返回值,可能會(huì)遇到數(shù)據(jù)對(duì)不上或結(jié)果不符合預(yù)期的情況,本文將分析在GoZero或其他基于Go的應(yīng)用中,使用make時(shí)可能導(dǎo)致的問(wèn)題及解決方案2025-01-01
Golang實(shí)現(xiàn)微信公眾號(hào)后臺(tái)接入的示例代碼
這篇文章主要介紹了Golang實(shí)現(xiàn)微信公眾號(hào)后臺(tái)接入的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Go語(yǔ)言使用buffer讀取文件的實(shí)現(xiàn)示例
本文主要介紹了Go語(yǔ)言使用buffer讀取文件的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Golang-如何判斷一個(gè)?interface{}?的值是否為?nil
interface?的內(nèi)部實(shí)現(xiàn)包含了兩個(gè)字段,一個(gè)是?type,一個(gè)是?data,這篇文章主要介紹了Golang-如何判斷一個(gè)interface{}的值是否為nil,需要的朋友可以參考下2023-05-05
Go切片導(dǎo)致rand.Shuffle產(chǎn)生重復(fù)數(shù)據(jù)的原因與解決方案
在 Go 語(yǔ)言的實(shí)際開(kāi)發(fā)中,切片(slice)是一種非常靈活的數(shù)據(jù)結(jié)構(gòu),然而,由于其底層數(shù)據(jù)共享的特性,在某些情況下可能會(huì)導(dǎo)致意想不到的 Bug,本文將詳細(xì)分析 rand.Shuffle 之后,切片中的數(shù)據(jù)出現(xiàn)重復(fù)的問(wèn)題,探討其根本原因,并給出最佳解決方案,需要的朋友可以參考下2025-02-02
golang如何實(shí)現(xiàn)mapreduce單進(jìn)程版本詳解
這篇文章主要給大家介紹了關(guān)于golang如何實(shí)現(xiàn)mapreduce單進(jìn)程版本的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
golang的httpserver優(yōu)雅重啟方法詳解
這篇文章主要給大家介紹了關(guān)于golang的httpserver優(yōu)雅重啟的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03

