站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

go module是什么?怎么用?(附使用示例)

本文由golang教程欄目給大家介紹關(guān)于go module的使用方法,希望對需要的朋友有所幫助!

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)閉模塊支持,它有三個可選值:offonauto,默認(rèn)值是auto

  • GO111MODULE=off禁用模塊支持,編譯時會從GOPATHvendor文件夾中查找包。

  • GO111MODULE=on啟用模塊支持,編譯時會忽略GOPATHvendor文件夾,只根據(jù) go.mod下載依賴,將依賴下載至%GOPATH%/pkg/mod/ 目錄下。

  • GO111MODULE=auto,當(dāng)項(xiàng)目在$GOPATH/src外且項(xiàng)目根目錄有go.mod文件時,開啟模塊支持。

簡單來說,設(shè)置GO111MODULE=on之后就可以使用go module了,以后就沒有必要在GOPATH中創(chuàng)建項(xiàng)目了,并且還能夠很好的管理項(xiàng)目依賴的第三方包信息。

使用 go module 管理依賴后會在項(xiàng)目根目錄下生成兩個文件go.modgo.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支持語義化版本號,比如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的各個包都需要翻墻,你可以在go.mod中使用replace替換成github上對應(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命令可以下載依賴包,并且還可以指定下載的版本。

  1. 運(yùn)行go get -u將會升級到最新的次要版本或者修訂版本(x.y.z, z是修訂版本號, y是次要版本號)
  2. 運(yùn)行go get -u=patch將會升級到最新的修訂版本
  3. 運(yùn)行go get package@version將會升級到指定的版本號version

如果下載所有依賴可以使用go mod download命令。

1.6 整理依賴

我們在代碼中刪除依賴代碼后,相關(guān)的依賴庫并不會在go.mod文件中自動移除。這種情況下我們可以使用go mod tidy命令更新go.mod中的依賴關(guān)系。

1.7 go mod edit

格式化

因?yàn)槲覀兛梢允謩有薷膅o.mod文件,所以有些時候需要格式化該文件。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

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
国产精品爽爽V在线观看无码| 久久青草精品38国产免费| 国产精品国产三级国快看 | 熟女精品视频一区二区三区| 中文字幕一区二区三区日韩精品 | 国产福利精品一区二区| 国产成人精品三上悠亚久久| 精品久久人人爽天天玩人人妻| 四虎永久在线精品国产馆V视影院| 日韩人妻精品无码一区二区三区| 国产成品精品午夜视频| 国产精品久久久久久影视| 精品国产品香蕉在线观看| 国产精品无码亚洲一区二区三区| 中文精品一卡2卡3卡4卡| 国产精品大片天天看片| 国产高清在线精品二区一| 亚欧在线精品免费观看一区| 精品人妻码一区二区三区| 精品熟女少妇a∨免费久久| 久久久久成人精品无码中文字幕| 日韩AV无码精品人妻系列| 十八18禁国产精品www| 人人妻人人澡人人爽精品日本| 亚洲午夜精品一区二区| 少妇精品无码一区二区三区| 久久99精品久久水蜜桃| 久久亚洲国产精品| 少妇人妻偷人精品无码视频| 久久精品蜜芽亚洲国产AV| 亚洲精品国产福利片| 精品成人乱色一区二区| 一区国产传媒国产精品| 婷婷射精av这里只有精品| 日本精品人妻无码免费大全| 亚洲国产精品自在自线观看| 国产精品无码一区二区在线| 国产精品综合一区二区| 凹凸国产熟女精品视频| 精品国产日韩久久亚洲| 免费观看四虎精品成人|