gopkg.in/antonmedv/expr.v0 (go): Package expr is an engine that can evaluate expressions.  You can pass variables into the expression, which can be of any valid Go type (including structs):  Expr uses reflection for accessing and iterating passed data. For example you can pass nested structures without any modification or preparation:  You can also pass functions into the expression:  If you planning to execute some expression lots times, it's good to compile it first and only one time:  It is possible to check used variables and functions during parsing of the expression.  Only `Request` and `Values` will be available inside expression, otherwise parse error.  If you try to use some undeclared variables or functions, an error will be returned during compilation:  Compiled ast can be compiled back to string expression using stringer fmt.Stringer interface:  Inside Expr engine there is no distinguish between int, uint and float types (as in JavaScript). All numbers inside Expr engine represented as `float64`. You should remember about it if you use any of binary operators (`+`, `-`, `/`, `*`, etc). Otherwise type remain unchanged.
Keywords: bytecode|configuration-language|engine|evaluator|expr|expression|expression-evaluator|expression-language|go|golang|rule-engine