介紹
Go1.11
版本(已上版本)支持module
功能,用於源代碼更替和版本控制。可替代對GOPATH
的依賴,不必在$GOPATH/src
下新建項目,而是任意包含go.mod
的目錄都可以是工程目錄。注意:$GOPATH目錄還有要配置的。
使用
1.現在在vagrant/www/go/下面創建test項目目錄(ps:GOPATH="/vagrant/go",可以用go env查看)
mkdir test
2.進入test執行,go mod init [模塊名](ps:[模塊名]必須跟項目同名)
go mod init test
看到提示 “go: creating new go.mod: module test” 說明 go mod 初始化成功了,會在當前目錄下生成一個 go.mod 文件
包含go.mod文件的目錄也被稱為模塊根,也就是說,go.mod 文件的出現定義了它所在的目錄為一個模塊
3.引入項目或者創建main.go
這里我引入的是一個項目,注意的main.go文件,其他的不要
4.go mod tidy -v // 添加確實模塊
添加完成可以去GOPATH/pkg看到有一個mod文件夾,里面就是剛剛下載的模塊
5.go mod vendor -v // 當前目錄下生產vendor目錄,包含所有依賴包
ll可以看到test項目項目多了一個vendor文件夾
同時go.mod和go.sum多了一下
6.運行項目
go run main.co
go mod
命令
go mod download // 下載依賴到本地緩存,查看GOCACHE緩存地址
go mod graph //把模塊之間的依賴圖顯示出來
go mod init [模塊名] // 當前目錄初始化和創建`go.mod`文件,最好是項目名
go mod tidy -v // 添加確實模塊和移除不必要的模塊
go mod vendor -v // 當前目錄下生產vendor目錄,包含所有依賴包
go mod verify // 檢查當前模塊的依賴是否已經存儲在本地下載的源代碼緩存中
go build -mod=vendor // 依賴module下的vendor生成可執行文件
go get rsc.io/sampler //更新穩定版依賴
GO111MODULE環境變量
GO111MODULE=off // 不用module功能,GOPATH模式尋找依賴包
GO111MODULE=on // module模式,build時找module下的vendor,GOPATH承擔下載依賴包到GOPATH/pkg/mod
GO111MODULE=auto // 根據當前目錄是否包含go.mod來判斷