站長資訊網
        最全最豐富的資訊網站

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

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

        go module 使用

        go module 在 go 1.14 版本之后被推出

        一、go module 使用介紹

        go module是Go1.11版本之后官方推出的版本管理工具,并且從Go1.13版本開始,go module將是Go語言默認的依賴管理工具。

        1.1 GO111MODULE

        要啟用go module支持首先要設置環境變量GO111MODULE,通過它可以開啟或關閉模塊支持,它有三個可選值:off、on、auto,默認值是auto

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

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

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

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

        使用 go module 管理依賴后會在項目根目錄下生成兩個文件go.modgo.sum。

        1.2 GOPROXY

        Go1.11之后設置GOPROXY命令為:

        export GOPROXY=https://goproxy.cn

        Go1.13之后GOPROXY默認值為https://proxy.golang.org,在國內是無法訪問的,所以十分建議大家設置GOPROXY,這里我推薦使用goproxy.cn。

        go env -w GOPROXY=https://goproxy.cn,direct

        1.3 go mod命令

        常用的go mod命令如下:

        go mod download    下載依賴的module到本地cache(默認為$GOPATH/pkg/mod目錄) go mod edit        編輯go.mod文件 go mod graph       打印模塊依賴圖 go mod init        初始化當前文件夾, 創建go.mod文件 go mod tidy        增加缺少的module,刪除無用的module go mod vendor      將依賴復制到vendor下 go mod verify      校驗依賴 go mod why         解釋為什么需要依賴

        1.4 go.mod

        go.mod文件記錄了項目所有的依賴信息,其結構大致如下:

        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,當然也可以跟git提交哈希,比如go get foo@e3702bed2。關于依賴的版本支持以下幾種格式:

        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

        在國內訪問golang.org/x的各個包都需要翻墻,你可以在go.mod中使用replace替換成github上對應的庫。

        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

        在項目中執行go get命令可以下載依賴包,并且還可以指定下載的版本。

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

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

        1.6 整理依賴

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

        1.7 go mod edit

        格式化

        因為我們可以手動修改go.mod文件,所以有些時候需要格式化該文件。Go提供了一下命令:

        go mod edit -fmt

        添加依賴項

        go mod edit -require=golang.org/x/text

        移除依賴項

        如果只是想修改go.mod文件中的內容,那么可以運行go mod edit -droprequire=package path,比如要在go.mod中移除golang.org/x/text包,可以使用如下命令:

        go mod edit -droprequire=golang.org/x/text

        關于go mod edit

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲精品无码不卡在线播放HE| 人妻少妇精品视中文字幕国语| 日韩精品一区二区三区中文字幕 | 国产精品亚洲片夜色在线| 亚洲国产精品综合久久一线| 国产精品制服丝袜亚洲欧美| 99精品免费视品| 久久发布国产伦子伦精品| 亚洲婷婷国产精品电影人久久| 国产精品国产高清国产专区| 久久国产成人精品麻豆| 国产精品igao视频网网址| 日韩精品一区二区三区色欲AV| 日本国产精品久久| 国产在线精品一区二区高清不卡| 欧美精品高清在线观看| 99国产精品久久| 99国产欧美精品久久久蜜芽| 精品调教CHINESEGAY| 无码国产精品一区二区免费16| 亚洲精品国产精品国自产观看| 久久乐国产精品亚洲综合| 精品一区二区三区免费观看| 国产午夜精品一区二区三区小说| 日韩精品在线看| 2023国产精品自拍| 99国产精品国产免费观看| 99爱在线视频这里只有精品| 91精品啪在线观看国产电影| 91精品国产综合久久四虎久久无码一级 | 国产精品你懂的| 国内精品伊人久久久久AV影院| 人人妻人人澡人人爽人人精品电影| 一本一本久久a久久综合精品蜜桃| 在线精品动漫一区二区无广告| 亚洲一区无码精品色| 合区精品中文字幕| 人妻少妇精品视频二区| 久久精品国产亚洲AV无码娇色| 69堂国产成人精品视频不卡| 精品视频一区二区三区免费|