GoLang之go module

GoLang之go module

注:该版本是以Go SDK v1.17进行讲解

1.go module依赖管理介绍

在这里插入图片描述
image-20220302095423819

2.GO111MODULE环境变量

在这里插入图片描述

3.GOPROXY环境变量

image-20220124164312575

4.使用go module方法

image-20220124164737522

5.go mod命令

image-20220124164447702

6.go get命令

image-20220124164636733

7.go.mod里//indirect

间接依赖:后面的// indirect,它表示这是一个间接依赖,间接依赖是指在当前module中没有直接import,而被当前module使用的第三方module引入的包
顶层依赖:当前module中被直接import的包

image-20220302102403859

image-20220302102437547

8.go.mod灰色时

表示未被引用

image-20220302101941052

image-20220302101952698

8.go.sum文件介绍

go.sum是一个构建状态跟踪文件。它会记录当前module所有的顶层和间接依赖,以及这些依赖的校验和,从而提供一个可以100%复现的构建过程并对构建对象提供安全性的保证。
go.sum同时还会保留过去使用的包的版本信息,以便日后可能的版本回退,这一点也与普通的锁文件不同。所以go.sum并不是包管理器的锁文件。
因此我们应该把go.sum和go.mod一同添加进版本控制工具的跟踪列表,同时需要随着你的模块一起发布。如果你发布的模块中不包含此文件,使用者在构建时会报错,同时还可能出现安全风险(go.sum提供了安全性的校验)

9.go list -m all

image-20220302095505218

image-20220302095811368

image-20220302095824104

image-20220302095849740

image-20220302095859247

10.go list -m -versions github.com/gin-gonic/gin

列出的是当前电脑上依赖版本的之前版本,不是市面上存在的所有的版本号

image-20220302095957597

11.指定依赖版本下载

go get github.com/gin-gonic/gin@v1.1.4

12.go mod tidy

go mod tidy 会自动清理掉不需要的依赖项,同时进行导入依赖或者下载依赖(先在在本地找,找不到的话就会进行下载)
注:go build也会整理并更新go.mod文件

image-20220302095505218

image-20220302100258890

13.修改go.mod里依赖版本

image-20220302100204273

14.go vendor

Go 1.5引入了vendor 机制,但是需要手动设置环境变量 GO15VENDOREXPERIMENT= 1,Go编译器才能启用。从Go1.6起,,默认开启 vendor 目录查找,vendor 机制就是在包中引入 vendor 目录,将依赖的外部包复制到 vendor 目录下,编译器在查找外部依赖包时,优先在 vendor 目录下查找。整个查找第三方包的流程如下:
1)如果当前包下有vendor目录,则从其下查找第三方的包,如果没有找到,则继续执行下一步操作。
如果当前包目录下没有vendor目录,则沿当前包目录向上逐级目录查找vendor目录, ,直到找到 $GOPATH/src下的vendor目录,只要找到vendor目录就去其下查找第三方的包,如果没有则继续执行下一步操作。
2)在GOPATH下面查找依赖包。
3)在GOROOT目录下面查找依赖包。
优点:vendor将原来放在$GOPATH/src的第三方包放到当前工程的vendor目录中进行管理。它为工程独立的管理自己所依赖第三方包提供了保证,多个工程独立地管理自己的第三方依赖包,它们之间不会相互影响。 vendor将原来包共享模式转换为每个工程独立维护的模式, vendor的另一个好处是保证了工程目录下代码的完整性,将工程代码复制到其他Go编译环境,不需要再去下载第三方包,直接就能编译,这种隔离和解耦的设计思路是一大进步。
golang一直提供了工具选择上的自由性,如果你不喜欢go mod的缓存方式,你可以使用go mod vendor回到godepgovendor使用的vendor目录进行包管理的方式。
当然这个命令并不能让你从godep之类的工具迁移到go modules,它只是单纯地把go.sum中的所有依赖下载到vendor目录里,如果你用它迁移godep你会发现vendor目录里的包回合godep指定的产生相当大的差异,所以请务必不要这样做。

image-20220302102403859

image-20220302102437547

image-20220302102741057

image-20220302102645287

删除vendor文件夹即可进行取消吧vendor模式

image-20220302104751213

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GoGo在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值