GO Mod使用及版本指定

1. go mod开启

1.1. 开启go mod

  go Modules是Go 1.11中新增的实验性功能,是一种新型的包管理工具,可以方便的包版本化管理。使用go mod,首先要把go升级到1.11版本以上。然后环境变量中需要设定好GOPATH以及GOROOT
随后可以通过一个命令或设置环境变量GO111MODULE来激活go modules:

  当GO111MODULE=off时,go命令就不支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。

  当module功能启用时,第三方依赖安装包下载的具体位置在$GOPATH/pkg/mod,可以使用go get 命令下载。

1.2. 开启go的中国下载代理

  在中国很多的go依赖模块无法下载,使用。通过切换中国的GO代理,进行go编码,其中存有大多GO编码模块。可以点击进入查看,https://goproxy.cn/

2. 项目中使用go mod

  假设目录关系如上。在project-1项目中,使用go mod.

2.1. 方法一:子模块相对路径引用

这里直接添加在项目中的相对路径,引用时注意包函数大小写,大写才能被外部引用;该路径是根据GOPATH/GOROOT的src目录中文件路径确认;例如$GOPATH/src/github.com/project-1

2.2. 方法二:replace替换路径

  然后再project-2项目的根目录生成的go.mod进行编写,添加replace代码

  最后通过 project-2入口函数,引用包project-1即可;这种适用于强迫症人士,保持代码整洁一致性

3. go mod 常用命令

4. go mod 指定并加载版本号

4.1. 方法一 go mod指定替换版本

在项目的go.mod中用replace指定包版本号,比如:

4.2. 方法二 go mod指定大小版本

  1. 配置下载相关依赖库及其版本
  • 下载指定小版本v3.2011.1: go get -u -x github.com/dgraph-io/badger/v3@v3.2011.1
    可以在本地GOPATH中查看到具体路径/root/go/pkg/mod/github.com/dgraph-![](https://turbock79.cn/wp-content/uploads/2020/05/微信截图_20210701103527.png)io/badger/v3@v3.2011.1,go mod会自动下载对应tag的指定节点;
  1. 配置依赖库及其指定版本

import导入时指定依赖大版本,项目中直接指定版本githubAddr/version,大版本号添加v1、v2等等,如后面不加/v等,则默认为v0或v1版本的大版本。该方法可以解决go get的时候报错invalid version: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2。该大版本主要依赖git项目Release版本。

同时也可以通过以下指定依赖版本,但仅限小版本号。
go mod edit -require=github.com/dgraph-io/badger/v3@v3.2011.1

然后再go mod tidy下载所以相关依赖,并删除不需要模块;

4.3. 方法三 go mod指定版本HASH值获取

通过浏览器获取想要获取版本的对应hash值,但是该方法对于版本更新不是很友好,需要不断调整。获取hash如下图

  • 使用gobgp版本号


参考文章:https://github.com/osrg/gobgp/issues/2274
本文源站地址链接:https://turbock79.cn/?p=1460

赞赏

微信赞赏支付宝赞赏

发表评论

邮箱地址不会被公开。 必填项已用*标注