Golang 1.11版本終於支持了官方的模塊依賴管理功能,1.11之前想要實現依賴管理只可以經過藉助第三方庫來實現,1.11之前的版本Golang項目必須依賴以GOPATH,從當前版本開始Golang項目能夠徹底脫離GOPATH目錄而工做,GOPATH將會逐漸被移除;git
Go mod的使用也比較簡單,Golang新增了環境變量GO11MODULE用於控制對Module的支持;
GO111MODULE = off
關閉Module的支持,從GOPATH、vendor目錄查找包
GO111MODULE = auto
根據當前目錄狀況啓用Module支持或禁用,只當項目不在GOPATH/src目錄當中,而且當前目錄中存在go.mod文件時啓用Module;
GO111MODULE = on
啓用Module支持;github
go mod download:下載模塊到本地緩存
go mod edit:編輯go.mod文件
go mod graph:輸出打印當前項目的依賴圖
go mod init:建立新模塊到當前目錄
go mod vendor:將依賴拷貝到vendor目錄下
go mod tidy:整理模塊,移除爲使用模塊,添加缺乏模塊
go mod verify:驗證模塊正確性
go mod why:查找依賴golang
一、初始化模塊
建立項目modtest目錄,進入modtest目錄:
執行 go mod init modtest初始化模塊,能夠看到初始化完成後當前目錄下生成了一個go.mod文件,因爲時剛初始化模塊因此打開文件能夠看到文件中只有一行:
module modtestredis
二、在當前模塊中引用其餘第三方模塊
建立test.go文件緩存
package main import( "fmt" "github.com/go-redis/redis" ) func main(){ fmt.Println("引用第三方模塊 ",redis.Client{}) }
執行go mod tidy 下載依賴,執行go run、go build 一樣會下載依賴;測試
執行完成後查看go.mod便可看到相關依賴信息,在GOPATH/pkg/mod目錄下能夠看獲得Golang module下來的所依賴的第三方包;
此時的go.mod已經配置了模塊所依賴的第三方包,go.mod內容以下:ui
三、在當前模塊引用包代理
在當前目錄下建立 submod包(目錄),進入submod目錄建立sub.go文件code
package submod func Name(){ }
在項目根目錄,修改test.go目錄引用submod包blog
package main import( "fmt" "github.com/go-redis/redis" "modtest/submod" ) func main(){ fmt.Println("測試 ",redis.Client{}) fmt.Println("包引用 ",submod.Name) }
四、使用module代理
因爲某些緣由,某些包不FQ時不能夠直接下得下來的,還好go mod提供了代理的設置,而且還提供了https://goproxy.io 代理服務,咱們能夠經過設置代理,下載golang.org/x/text等沒法直接下載的第三方包;
set GOPROXY = https://goproxy.io