网站首页 » Golang » go mod 模式和 import

go mod 模式和 import

March 16, 2021 Golang

一、 go mod 是什么

go mod 即 go module 是Golang 1.11 版本引入的官方包(package)依赖管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。

module是相关go包的集合,是代码更替和版本控制的单元。模块主要标识为源文件夹下的go.mod文件,此文件目录也成为模块根,其取代了旧的基于src的方法,使用module的模式来指定源文件和导入包。

二、 什么时候会使用了go mod 模式

当我们查看 go 的配置时

go env

2021-03-16T09:21:21.png

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的版本号。
2021-03-16T09:25:23.png

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.

2021-03-16T09:28:08.png
可见此时go.mod中多了一些内容,包括一个require指令和内部一些相关依赖。

四、GO111MODULE环境变量

GO111MODULE 是module支持的临时环境变量,其可以设置:off, on, auto。

设置为off时,将使用原始的GOPATH模式,即在gopath中查找依赖。

设置为on,则使用mod功能,不访问gopath。

设置为auto即默认模式,此时go会根据当前目录决定是否使用modules功能,若当前目录在src外切包含go.mod文件,才会启用mod功能。

添加新评论