排序与极值
给版本号列表排序,找出最新/最旧、最新稳定/预发布版本。
📊 排序
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]降序的两种方式
- SDK:
sort.Sort(sort.Reverse(slice))—— 标准库sort.Reverse包一层即可 - CLI:
versions 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🚀 下一步
- 分组与聚合
- API:
SortVersionSlice·Max·LatestStable·FilterByStable - CLI:
sort·max·latest-stable