天天看點

go mod 包管理工具

如果你還在使用 GOPATH 模式來開發Golang程式,那麼你可以參考本文來告别 GOPATH,并帶給你一個友善的包管理工具。

關于 go mod 的說明和簡單使用,可以參考:

1、​​Go1.1.1新功能module的介紹及使用​​

2、​​Introduction to Go Modules​​

3、​​Go 1.11 Modules 官方說明文檔​​

使用go mod 管理項目,就不需要非得把項目放到GOPATH指定目錄下,你可以在你磁盤的任何位置建立一個項目,比如:

建立一個名為 wserver 的項目,項目路徑 D:\test\wserver (注意,該路徑并不在GOPATH裡)

go mod 包管理工具

進入項目目錄 D:\test\wserver 裡,建立一個 go源碼檔案: main.go

go mod 包管理工具

然後在 D:\test\wserver 裡打開終端執行指令:  go mod init wserver (go mod init 後面需要跟一個名字,我這裡叫wserver)

go mod 包管理工具

看到提示 “go: creating new go.mod: module wserver”  說明 go mod 初始化成功了,會在目前目錄下生成一個 go.mod 檔案。

包含go.mod檔案的目錄也被稱為子產品根,也就是說,go.mod 檔案的出現定義了它所在的目錄為一個子產品。

執行上述指令之後,其實你已經可以開發編譯運作此項目了,比如我們随便使用github上的一個包,在終端列印一下

go mod 包管理工具

運作一下,會看到輸出結果:  { false false false}  ,同時項目目錄下多出了一個檔案 go.sum  。go.sum 是記錄所依賴的項目的版本的鎖定。

go mod 包管理工具

現在我們再建一個項目内的包 route :

go mod 包管理工具

在 main.go 裡如果需要使用這個包,需要使用這個包的 子產品内的絕對路徑來導入,比如:

go mod 包管理工具

"wserver/route"  導入這個包的地方是 子產品内的絕對路徑,就是要從go.mod所在的目錄開始。

另外,如果我們想把這個項目放到GOPATH下面,不使用go mod模式,而是想使用GOPATH模式的話,,隻需要把這個項目移到GOPATH環境變量包含的任意一個目錄下面的src目錄裡,就可以啟用GOPATH模式了(前提是 GO111MODULE 這個環境變量的值必須是auto 或 off)。

比如:gotest 目錄是GOPATH環境變量裡的其中一個目錄,我們将上面的代碼複制到 src 目錄下,删除原來的go.mod 、go.sum 兩個檔案(也可以不删除),代碼一樣可以運作:

go mod 包管理工具