Skip to content

排序与极值

给版本号列表排序,找出最新/最旧、最新稳定/预发布版本。

📊 排序

go
vs := versions.NewVersions("1.10.0", "1.2.0", "1.1.0", "1.0.0")

asc := versions.SortVersionSlice(vs)  // 升序:[1.0.0, 1.1.0, 1.2.0, 1.10.0]

// 降序:用 VersionSlice + sort.Reverse
import "sort"
desc := versions.VersionSlice(asc)
sort.Sort(sort.Reverse(desc))  // [1.10.0, 1.2.0, 1.1.0, 1.0.0]

降序的两种方式

  • SDKsort.Sort(sort.Reverse(slice)) —— 标准库 sort.Reverse 包一层即可
  • CLIversions sort --desc —— 直接用 --desc 标志

字符串版(保留原始书写):

go
strs := versions.SortVersionStringSlice([]string{"v1.10.0", "1.2.0"})
// ["1.2.0" "v1.10.0"]

🏆 极值

go
vs := versions.NewVersions("1.0.0", "1.0.0-rc1", "1.1.0-beta1", "2.0.0")

versions.Max(vs).Raw               // 2.0.0(最新,含预发布)
versions.Min(vs).Raw               // 1.0.0-rc1(最旧)
versions.LatestStable(vs).Raw      // 2.0.0(最新稳定)
versions.LatestPrerelease(vs).Raw  // 1.1.0-beta1(最新预发布)

🎚 过滤

go
stable := versions.FilterByStable(vs)       // 仅稳定版
pre := versions.FilterByPrerelease(vs)      // 仅预发布
maj2 := versions.FilterByMajor(vs, 2)       // 仅 Major=2

🚀 下一步

基于 MIT 协议发布