golang eval
时间: 2023-09-30 14:11:46 浏览: 63
Go语言没有内置的eval函数,但可以使用一些第三方库来实现类似的功能。
其中比较常用的是"go-eval"和"go-exprtk"。这两个库都可以让你在运行时动态地执行Go代码。
使用"go-eval"库,你可以这样动态执行Go代码:
```
import (
"fmt"
"github.com/apaxa-go/eval"
)
func main() {
context := eval.NewContext()
context.DefineVar("x", 42)
result, err := context.Eval(`2 * x`)
if err != nil {
fmt.Println("eval error:", err)
return
}
fmt.Println(result) // 输出: 84
}
```
使用"go-exprtk"库,你可以这样动态执行Go代码:
```
import (
"fmt"
"github.com/AlexanderFadeev/go-exprtk"
)
func main() {
expr, err := exprtk.NewExpression("2 * x")
if err != nil {
fmt.Println("expression error:", err)
return
}
vars := map[string]float64{"x": 42}
result, err := expr.Evaluate(vars)
if err != nil {
fmt.Println("evaluation error:", err)
return
}
fmt.Println(result) // 输出: 84
}
```
注意,动态执行代码存在一定的安全风险,应该尽量避免在生产环境中使用。