Skip to content

Version

类型 · 根包

go
type Version struct {

	// Raw 原始的版本号字符串
	Raw string `json:"raw"`

	// PublicTime 此版本的发布时间
	PublicTime time.Time `json:"public_time"`

	// VersionNumbers 版本号中的数字部分
	// 例如对于版本号 "v1.2.3-beta1",VersionNumbers 为 [1,2,3]
	VersionNumbers VersionNumbers `json:"version_numbers"`

	// Prefix 版本号数字部分之前的前缀
	// 例如对于版本号 "v1.2.3",Prefix 为 "v"
	Prefix VersionPrefix `json:"prefix"`

	// Suffix 版本号数字部分之后的后缀
	// 例如对于版本号 "1.2.3-beta1",Suffix 为 "-beta1"
	Suffix VersionSuffix `json:"suffix"`

	// Metadata semver 构建元数据
	//
	// 在 semver 规范中,构建元数据是版本号中 + 号后面的部分,如 "1.0.0+build123" 中的 "build123"。
	// 根据 semver 规范,构建元数据不参与版本比较。
	Metadata string `json:"metadata,omitempty"`
}

📖 说明

Version 用于表示一个版本号

Version 结构体封装了版本号的各个组成部分,包括原始字符串、发布时间、数字部分、 前缀和后缀。它支持版本号的解析、比较和分组等操作,实现了 Comparable 接口以便 进行版本排序。

一个典型的版本号格式可能为:v1.2.3-beta1,其中:

  • "v" 是前缀
  • "1.2.3" 是数字部分
  • "-beta1" 是后缀
go
// 创建一个版本对象
version := versions.NewVersion("v1.2.3-rc1")

// 检查版本是否有效
if version.IsValid() {
    fmt.Printf("版本号有效: %s\n", version.Raw)
    fmt.Printf("版本号数字部分: %v\n", version.VersionNumbers)
}

// 比较两个版本
v1 := versions.NewVersion("1.2.3")
v2 := versions.NewVersion("1.3.0")
if v1.CompareTo(v2) < 0 {
    fmt.Println("v1 比 v2 旧")
}

源码位置

定义于 version.go

基于 MIT 协议发布