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 mainimport ("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强大,支持的操作和类型有限,比如字符串表达式就没法使用变量、函数等