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来管理,简单方便,同时加快效率
若是你喜欢个人文章,请关注个人公众号哈~ 我会持续不断的输出新内容哈~感谢诸位
更多精彩内容,关注下面的微信公众号~