在使用Golang模块命令(例如go get)时,@latest个特殊查询和@upgrade个特殊查询有什么不同?

我认为latest只会将所选模块设置为最新的已知版本,upgrade只会"升级"到下一个已知版本(如果没有已知版本,那么它将下载最后一个).然而,在这两种情况下,它都只会进入最新版本,那么有什么区别呢?

推荐答案

引用和解释文档(https://go.dev/ref/mod#version-queries)

"最新", Select 可用的最高发布版本.如果没有发布版本,最新版本将 Select 最高的预发布版本.如果没有标记的版本,Latest会在资源库的缺省分支的顶端为提交 Select 一个伪版本.

"升级"与"最新"类似,不同之处在于,如果模块当前需要的版本高于最新版本 Select 的版本(例如,预发布),则升级将 Select 当前版本.

例如,如果v1.2.2和v1.2.3-之前的版本可用,则最新的查询将 Select v1.2.2,即使v1.2.3-之前的版本更高.

Go相关问答推荐

使用Gorm创建自定义连接表

为什么我不能使用Docker从本地访问我的Gin应用程序?

获取作为类型参数传递给方法接收方中的类型参数的切片的基础类型

GitHub发布Golang子模块

如何模拟go的Elastic search SDK?

golang regex基于关键字拆分字符串

未实现的 desc = 未知服务 pb.AuthService 我的简单身份验证服务器上出现错误

我们如何保证取消的上下文会导致 goroutine 终止?

使用Dockertest进行Golang SQL单元测试的基本设置

Caddy服务器try 打开端口80而不是8090.

下载和合并时输出文件已损坏

如何判断范围内的字段?

Golang 中的泛型类型转换

Golang 通过接口反映/迭代{}

如何在时间范围内规范化数组的元素?

通过 golang 中的 gremlin-go 库嵌入 gremlin 服务器

未定义 protoc protoc-gen-go 时间戳

Go 导入范围查找 protobuf 类型

在 VSCode 中使用命令行参数调试 Go 测试

在 Go 泛型中,如何对联合约束中的类型使用通用方法?