go module倉庫代理(阿里雲):GOPROXY=https://mirrors.aliyun.com/goproxy/
1.設置模塊支持
go 1.11 有了對模塊的實驗性支持,大部分的子命令都知道如何處理一個模塊,比如 run build install get list mod
子命令,第三方工具可能會支持的晚一些。到 go 1.12 會刪除對 GOPATH
的支持,go get
命令也會變成只能獲取模塊,不能像現在這樣直接獲取一個裸包。
可以用環境變量 GO111MODULE
開啟或關閉模塊支持,它有三個可選值:off
、on
、auto
,默認值是 auto
。
GO111MODULE=off
無模塊支持,go 會從 GOPATH 和 vendor 文件夾尋找包。GO111MODULE=on
模塊支持,go 會忽略 GOPATH 和 vendor 文件夾,只根據go.mod
下載依賴。GO111MODULE=auto
在$GOPATH/src
外面且根目錄有go.mod
文件時,開啟模塊支持。
在使用模塊的時候,GOPATH
是無意義的,不過它還是會把下載的依賴儲存在 $GOPATH/pkg/mod
中,也會把 go install
的結果放在 $GOPATH/bin
中。
2.初始化模塊
go mod init [module name]
我們運行下 go mod init test命令試試,目錄下生成了一個go.mod的文件,內容如下:
module test go 1.12
比如我要安裝beego框架,運行下命令:go get github.com/astaxie/beego
文件內容發生了變化:
module test go 1.12 require ( github.com/astaxie/beego v1.12.0 // indirect github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect )
說明go get對文件產生了影響,把安裝的包引入到了go.mod文件里。
其他命令說明:
go mod download :安裝mod的模塊到本地緩存
go mod vendor:vendor版本的解決方案,將依賴復制到vendor下面。
go mod tidy:移除未用的模塊,以及添加缺失的模塊。
go mod verify:驗證所有模塊是否正確。
以前都是下到$GOPATH/src下再引用模塊,感覺有點OUT啊,這種方法好多了...