Golang從誕生之初就一直有個被詬病的問題:缺乏一個行之有效的「官方」包依賴管理工具。shell
那爲啥會出現這樣的一個問題呢?緩存
緣由:在Google內部,全部人都是在一個代碼庫上進行開發的,所以包依賴管理工具並非很是須要。但Golang變成一個社區化的工程語言以後,這個問題被放大了。微信
go mod其實就是一個Modules,關於Modules的官方定義爲:ide
Modules是相關Go包的集合,是源代碼交換和版本控制的單元。簡單的說就是一個相似索引文件,裏面包含依賴哪些模塊。工具
go命令直接支持使用Modules,包括記錄和解析對其餘模塊的依賴性。學習
一、排除來GOPATH的沒法有效的管理版本依賴,沒有一個地方可以代表依賴包的具體版本號,沒法造成有效的版本配套關係的缺點。ui
二、排除使用vendor這個特性,vendor它可以很好的管理工程,可是它會使得每個工程都會有一個單獨的vendor,很是浪費硬盤,可能致使ide直接卡死。spa
三、Go Modules相關是一個索引文件,不須要包含src,bin等子目錄,只要目錄下包含go.mod文件便可。命令行
接下來,先來看看怎麼用的吧!版本控制
1.首先將go的版本升級爲1.11以上
2.設置GO111MODULE,首先咱們用在terminal上用go env能夠看到此時go module默認是關閉的,那可使用下述命令將其打開
➜ ~ go env GO111MODULE="off" GOARCH="amd64" GOBIN="" ... ➜ ~ go env -w GO111MODULE=on ➜ ~ go env GO111MODULE="on" GOARCH="amd64" GOBIN="" ...
GO111MODULE簡介:有三個值,分別是:off, on和auto(默認值)
簡單說就是如下兩種狀況會使用go mod功能,分別是:
下面會簡單的列舉如下 go mod的常見命令,你們能夠參考使用
➜ ~ go mod Go mod provides access to operations on modules. Note that support for modules is built into all the go commands, not just 'go mod'. For example, day-to-day adding, removing, upgrading, and downgrading of dependencies should be done using 'go get'. See 'go help modules' for an overview of module functionality. Usage: go mod <command> [arguments] The commands are: download download modules to local cache //下載模塊到本地緩存 edit edit go.mod from tools or scripts // 從工具或腳本中編輯go.mod文件 graph print module requirement graph //打印模塊需求圖 init initialize new module in current directory //在當前目錄下初始化新的模塊 tidy add missing and remove unused modules //添加缺失的模塊以及移除無用的模塊 vendor make vendored copy of dependencies //製做依賴項的自動副本 verify verify dependencies have expected content //驗證依賴項是否達到預期的目的 why explain why packages or modules are needed //解釋爲何須要包或模塊 Use "go help mod <command>" for more information about a command. ➜ ~ go help mod init
以上就是本篇關於go mod的全部內容,小白在此仍是推薦全部學習go的小夥伴來使用go mod來管理,簡單方便,同時加快效率
若是你喜歡個人文章,請關注個人公衆號哈~ 我會持續不斷的輸出新內容哈~感謝諸位
更多精彩內容,關注下面的微信公衆號~