govaluate
支持算式表达式或多个逻辑表达式,可以一次构建多次进行应用操作。从传统的if... else...中解放出来,引入规则引擎的操作
例子:
expression, err := govaluate.NewEvaluableExpression("condition1 > 0 || condition2 in (condition3,'name')");
parameters := make(map[string]interface{}, 8)
parameters["condition1"] = -1;
parameters["condition2"] = name;
parameters["condition3"] = July;
result, err := expression.Evaluate(parameters);
实际输出:
true
true
例子:
expression, err := govaluate.NewEvaluableExpression("condition1 > 0 || condition2 in (condition3,'name')");
parameters := make(map[string]interface{}, 8)
parameters["condition1"] = -1;
parameters["condition2"] = ZhangSan;
parameters["condition3"] = July;
result, err := expression.Evaluate(parameters);
实际输出:
false
false
govaluate除了支持in操作、还支持正则表达式
运算符支持
表达式引擎支持以下运算:
二元计算符 : + - / & | ^ * % >> <<
二元比较符 : > >= < <= == != =~ !~
逻辑操作符 : || &&
括号 : ( ) --通过括号改变优先级
数组相关 : IN
一元计算符 : ! - ~
三元运算符 : ? :
空值聚合符: ??