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
一元計算符 : ! - ~
三元運算符 : ? :
空值聚合符: ??