本文由golang教程欄目給大家介紹關(guān)于go module的使用方法,希望對(duì)需要的朋友有所幫助!
go module 使用
go module 在 go 1.14 版本之后被推出
一、go module 使用介紹
go module
是Go1.11版本之后官方推出的版本管理工具,并且從Go1.13版本開始,go module
將是Go語言默認(rèn)的依賴管理工具。
1.1 GO111MODULE
要啟用go module
支持首先要設(shè)置環(huán)境變量GO111MODULE
,通過它可以開啟或關(guān)閉模塊支持,它有三個(gè)可選值:off
、on
、auto
,默認(rèn)值是auto
。
-
GO111MODULE=off
禁用模塊支持,編譯時(shí)會(huì)從GOPATH
和vendor
文件夾中查找包。 -
GO111MODULE=on
啟用模塊支持,編譯時(shí)會(huì)忽略GOPATH
和vendor
文件夾,只根據(jù)go.mod
下載依賴,將依賴下載至%GOPATH%/pkg/mod/
目錄下。 -
GO111MODULE=auto
,當(dāng)項(xiàng)目在$GOPATH/src
外且項(xiàng)目根目錄有go.mod
文件時(shí),開啟模塊支持。
簡單來說,設(shè)置GO111MODULE=on
之后就可以使用go module
了,以后就沒有必要在GOPATH中創(chuàng)建項(xiàng)目了,并且還能夠很好的管理項(xiàng)目依賴的第三方包信息。
使用 go module 管理依賴后會(huì)在項(xiàng)目根目錄下生成兩個(gè)文件go.mod
和go.sum
。
1.2 GOPROXY
Go1.11之后設(shè)置GOPROXY命令為:
export GOPROXY=https://goproxy.cn
Go1.13之后GOPROXY
默認(rèn)值為https://proxy.golang.org
,在國內(nèi)是無法訪問的,所以十分建議大家設(shè)置GOPROXY,這里我推薦使用goproxy.cn。
go env -w GOPROXY=https://goproxy.cn,direct
1.3 go mod命令
常用的go mod
命令如下:
go mod download 下載依賴的module到本地cache(默認(rèn)為$GOPATH/pkg/mod目錄) go mod edit 編輯go.mod文件 go mod graph 打印模塊依賴圖 go mod init 初始化當(dāng)前文件夾, 創(chuàng)建go.mod文件 go mod tidy 增加缺少的module,刪除無用的module go mod vendor 將依賴復(fù)制到vendor下 go mod verify 校驗(yàn)依賴 go mod why 解釋為什么需要依賴
1.4 go.mod
go.mod文件記錄了項(xiàng)目所有的依賴信息,其結(jié)構(gòu)大致如下:
module github.com/Q1mi/studygo/blogger go 1.12 require ( github.com/DeanThompson/ginpprof v0.0.0-20190408063150-3be636683586 github.com/gin-gonic/gin v1.4.0 github.com/go-sql-driver/mysql v1.4.1 github.com/jmoiron/sqlx v1.2.0 github.com/satori/go.uuid v1.2.0 google.golang.org/appengine v1.6.1 // indirect )
其中,
module
用來定義包名require
用來定義依賴包及版本indirect
表示間接引用
1.4.1 依賴的版本
go mod支持語義化版本號(hào),比如go get foo@v1.2.3
,也可以跟git的分支或tag,比如go get foo@master
,當(dāng)然也可以跟git提交哈希,比如go get foo@e3702bed2
。關(guān)于依賴的版本支持以下幾種格式:
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 gopkg.in/vmihailenco/msgpack.v2 v2.9.1 gopkg.in/yaml.v2 <=v2.2.1 github.com/tatsushid/go-fastping v0.0.0-20160109021039-d7bb493dee3e latest
1.4.2 replace
在國內(nèi)訪問golang.org/x的各個(gè)包都需要翻墻,你可以在go.mod中使用replace替換成github上對(duì)應(yīng)的庫。
replace ( golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac golang.org/x/net v0.0.0-20180821023952-922f4815f713 => github.com/golang/net v0.0.0-20180826012351-8a410e7b638d golang.org/x/text v0.3.0 => github.com/golang/text v0.3.0 )
1.5 go get
在項(xiàng)目中執(zhí)行go get
命令可以下載依賴包,并且還可以指定下載的版本。
- 運(yùn)行
go get -u
將會(huì)升級(jí)到最新的次要版本或者修訂版本(x.y.z, z是修訂版本號(hào), y是次要版本號(hào)) - 運(yùn)行
go get -u=patch
將會(huì)升級(jí)到最新的修訂版本 - 運(yùn)行
go get package@version
將會(huì)升級(jí)到指定的版本號(hào)version
如果下載所有依賴可以使用go mod download
命令。
1.6 整理依賴
我們?cè)诖a中刪除依賴代碼后,相關(guān)的依賴庫并不會(huì)在go.mod
文件中自動(dòng)移除。這種情況下我們可以使用go mod tidy
命令更新go.mod
中的依賴關(guān)系。
1.7 go mod edit
格式化
因?yàn)槲覀兛梢允謩?dòng)修改go.mod文件,所以有些時(shí)候需要格式化該文件。Go提供了一下命令:
go mod edit -fmt
添加依賴項(xiàng)
go mod edit -require=golang.org/x/text
移除依賴項(xiàng)
如果只是想修改go.mod
文件中的內(nèi)容,那么可以運(yùn)行go mod edit -droprequire=package path
,比如要在go.mod
中移除golang.org/x/text
包,可以使用如下命令:
go mod edit -droprequire=golang.org/x/text
關(guān)于go mod edit
的
相關(guān)推薦
- 2025年國內(nèi)免費(fèi)AI工具推薦:文章生成與圖像創(chuàng)作全攻略
- 從流量變現(xiàn)到信任變現(xiàn):個(gè)人站長的私域運(yùn)營方法論
- 傳統(tǒng)網(wǎng)站如何借力短視頻?從SEO到“內(nèi)容種草”的轉(zhuǎn)型策略
- AI時(shí)代,個(gè)人站長如何用AI工具實(shí)現(xiàn)“一人公司”
- 個(gè)人站長消亡論?從“消失”到“重生”的三大破局路徑
- raksmart法蘭克福云服務(wù)器延遲高嗎?
- 如何監(jiān)控RAKsmart CDN的性能?
- 自媒體人搭建直播服務(wù)器使用raksmart優(yōu)化技巧