欢迎大家访问我的博客http://blog.ayla1688.cool
原文地址:http://blog.ayla1688.cool/archives/392.html
一、 go mod 是什么
go mod 即 go module 是Golang 1.11 版本引入的官方包(package)依赖管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。
module是相关go包的集合,是代码更替和版本控制的单元。模块主要标识为源文件夹下的go.mod文件,此文件目录也成为模块根,其取代了旧的基于src的方法,使用module的模式来指定源文件和导入包。
二、 什么时候会使用了go mod 模式
当我们查看 go 的配置时
go env
GO111MODULE=on
表示使用go module 模式管理软件包, 而不使用GOPATH, 将软件包放到GOPATH的src文件夹下。(当你下载了GIN包时,在src文件夹下看不到github.com文件夹)
三、解读go module 模式
创建gin-test 文件夹, 进入文件夹,执行
go mod init
会出现go.mod 文件,go.mod文件定义了module路径和其他需要在build时引入的模块的版本, 打开go.mod 只会出现红框中的模块名称和go的版本号。
** require ** 的内容是我已经执行了命令** go get -u github.com/gin-gonic/gin **
当我们要使用gin 包的时候, 在 gin-test文件夹下执行命令
go get -u github.com/gin-gonic/gin
go get命令成功拉取到了gin-gonic相关的包,此时再查看go.mod.
可见此时go.mod中多了一些内容,包括一个require指令和内部一些相关依赖。
四、GO111MODULE环境变量
GO111MODULE 是module支持的临时环境变量,其可以设置:off, on, auto。
设置为off时,将使用原始的GOPATH模式,即在gopath中查找依赖。
设置为on,则使用mod功能,不访问gopath。
设置为auto即默认模式,此时go会根据当前目录决定是否使用modules功能,若当前目录在src外切包含go.mod文件,才会启用mod功能。