Skip to content

范围查询

查询「在某区间内的版本」,并用包含策略排除预发布等。

🎚 VersionRange

go
low := versions.NewVersion("1.0.0")
high := versions.NewVersion("2.0.0")

r := versions.NewClosedRange(low, high) // [1.0.0, 2.0.0]
r.Contains(versions.NewVersion("1.5.0")) // true
r.Contains(versions.NewVersion("2.0.0")) // true(闭区间含上界)

open := versions.NewOpenRange(low, high) // (1.0.0, 2.0.0)
open.Contains(versions.NewVersion("2.0.0")) // false(开区间不含上界)

// 自定义两端开闭
r2 := versions.NewVersionRange(low, high, true, false) // [1.0.0, 2.0.0)
r2.Contains(versions.NewVersion("2.0.0")) // false

🔍 过滤区间内版本

go
vs := versions.NewVersions("0.9.0", "1.0.0", "1.5.0", "2.0.0", "2.1.0")
r := versions.NewClosedRange(versions.NewVersion("1.0.0"), versions.NewVersion("2.0.0"))
inRange := r.Filter(vs) // [1.0.0 1.5.0 2.0.0]

🎯 IsBetween 便捷方法

go
v := versions.NewVersion("1.5.0")
low := versions.NewVersion("1.0.0")
high := versions.NewVersion("2.0.0")
v.IsBetween(low, high) // true(闭区间)

🚫 排除预发布(ContainsPolicy)

SortedVersionGroups.QueryRange 支持用 ContainsPolicy 按字符串过滤端点。典型场景:在范围内排除所有预发布版本(后缀含 -)。

详见 范围与包含策略SortedVersionGroups.QueryRange

🚀 下一步

基于 MIT 协议发布