适用于大多数需要逻辑表达式场景,简小有效。
支持范围
支持类型: int string
支持操作符: > < >= <= && ||
支持两个内嵌函数: in_array(1, []int{1,2,3,4}), ver_compare(x, “>”, “10.1.1”)
使用方式
engine, err := NewEngine(v.expr)
if err != nil {
t.Error(err)
}
result, err := engine.RunRule(v.control)
原理
使用go/ast and go/parser来解析Golang代码,生成AST树,并进行判断执行。