python和go执行字符串表达式
1、python/eval
python里可以使用内置的eval函数,来执行一个字符串表达式的结果,字符串表达式里可以是变量、函数、运算符等
def test():
return True
flag = False
print(eval("test() and True and flag" ))
执行结果为False
2、golang/govaluate
那么在go里面怎么实现eval功能呢?可以使用github上的开源库govaluate
安装:go get github.com/Knetic/govaluate
package main
import (
"fmt"
"github.com/Knetic/govaluate"
)
func main() {
expression, err := govaluate.NewEvaluableExpression("1 + 2")
if err != nil {
fmt.Println("字符串表达式有误")
}
result, err2 := expression.Evaluate(nil)
if err2 != nil {
fmt.Println("字符串表达式执行报错")
}
fmt.Println(result)
}
执行结果为3
当然,govaluate功能没有eval强大,支持的操作和类型有限,比如字符串表达式就没法使用变量、函数等