Go module 使用教程

go module 介绍:

自Go1.1.1版本发布(2018-08-24发布),从官方的博客中看到,其中有个比较突出的特色就是module,模块概念。

module是一个相关Go包的集合,它是源代码更替和版本控制的单元。模块由源文件形成的go.mod文件的根目录定义,包含go.mod文件的目录也被称为模块根。moudles取代旧的的基于GOPATH方法来指定在工程中使用哪些源文件或导入包。模块路径是导入包的路径前缀,go.mod文件定义模块路径,并且列出了在项目构建过程中使用的特定版本。

该功能到时候就可以移除对GOPATH和go get命令的支持。

go module 常用命令:

go mod init  #当前模块下初始化

go mod  tidy #添加缺失的模块以及移除无用的模块

go mod  verify #验证依赖项是否达到预期的目的

go mod vendor #生成vendor文件夹

配置环境变量 GO111MODULE:

GO111MODULE它有三个可选值: off、 on、 auto,默认值是 auto。

1.GO111MODULE=off,无模块支持,go会从 GOPATH 和 vendor 文件夹寻找包。

2.GO111MODULE=on,模块支持,go会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod下载依赖。

3.GO111MODULE=auto,在 $GOPATH/src外面且根目录有 go.mod文件时,开启模块支持。

go.mod 文件:

go.mod文件定义module路径以及列出其他需要在build时引入的模块的特定的版本。
go.mod文件会在go mod init 时会自动生成,当项目不在GoPath下,需要go mod init [模块名];

在生成的go.mod文件中,我们可以修改版本号如下方的v1.3.0,来指定版本

require (
    github.com/gin-gonic/gin v1.3.0
)

还有一点需要注意的是,在国内访问不少第三方包都需要科学上网:

我们可以在项目下 打开cmd通过命令行设置代理,然后再执行go mod的命令即可;

也可以在go.mod中使用replace替换成github上对应的库。

具体使用步骤:

  1. 首先将你的Go更新到1.11以上版本;
  2. 如果项目在GoPath目录下,设置系统环境变量GO111MODULE=on;
  3. 执行命令go mod init [模块名] 在当前目录下生成一个go.mod文件;
  4. 如果你工程中存在一些不能确定版本的包,那么生成的go.mod文件可能就不完整,因此继续执行下面的命令;
  5. 执行go mod tidy命令,它会添加缺失的模块以及移除不需要的模块。执行后会生成go.sum文件(模块下载条目)。添加参数-v,例如go mod tidy -v可以将执行的信息,即删除和添加的包打印到命令行;
  6. 执行命令go mod verify来检查当前模块的依赖是否全部下载下来,是否下载下来被修改过。如果所有的模块都没有被修改过,那么执行这条命令之后,会打印all modules verified。
  7.  执行命令go mod vendor生成vendor文件夹,该文件夹下将会放置你go.mod文件描述的依赖包,文件夹下同时还有一个文件modules.txt,它是你整个工程的所有模块。在执行这条命令之前,如果你工程之前有vendor目录,应该先进行删除。同理go mod vendor -v会将添加到vendor中的模块打印出来;

 常见的命令如下,格式为 go mod  COMMAND: 

命令解释
init -【模块名】初始化modules
download下载modules到本地cache
edit从工具或脚本中编辑go.mod文件
graph以文本模式打印模块需求图
tidy检查,删除错误或者不使用的modules,下载没download的package
vendor生成vendor目录
verify验证依赖是否正确
why解释为什么需要包或模块

       本人由go vendor管理转到go module折腾了很久,踩了很多各种各样的坑,在此不便过多赘述,小伙伴若遇到其它问题,欢迎留言交流。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值