Skip to content

约束表达式

关键

约束表达式用于判断「某版本是否满足条件」,支持 9 种运算符与 AND/OR 组合。

🔢 运算符

运算符常量语义示例
=ConstraintEqual等于=1.2.3
!=ConstraintNotEqual不等于!=1.0.0
>ConstraintGreaterThan大于>1.0.0
>=ConstraintGreaterThanOrEqual大于等于>=1.0.0
<ConstraintLessThan小于<2.0.0
<=ConstraintLessThanOrEqual小于等于<=2.0.0
^ConstraintCaret兼容(左起首个非零段锁定)^1.2.3>=1.2.3,<2.0.0
~ConstraintTilde近似(锁定到 minor)~1.2.3>=1.2.3,<1.3.0
x/X/*ConstraintWildcard通配1.2.x>=1.2.0,<1.3.0

🔗 组合

  • AND(ConstraintSet):逗号分隔,所有条件都须满足。>=1.0.0,<2.0.0
  • OR(ConstraintUnion)|| 分隔,任一满足即可。1.x || 2.0.0

约束表达式是三层结构——一个 Union 由多个 Set 组成(OR),每个 Set 又由多个 Single 组成(AND):

🧪 示例

go
// AND
cs, _ := versions.ParseConstraintSet(">=1.0.0,<2.0.0")
cs.Match(versions.NewVersion("1.5.0")) // true
cs.Match(versions.NewVersion("2.0.0")) // false

// OR
cu, _ := versions.ParseConstraintUnion("1.x || 3.0.0")
cu.Match(versions.NewVersion("1.9.0")) // true
cu.Match(versions.NewVersion("2.0.0")) // false

// Version 便捷方法
v := versions.NewVersion("1.5.0")
ok, _ := v.Matches(">=1.0.0,<2.0.0") // true

📚 延伸

基于 MIT 协议发布