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