使用Go(golang)我想带一个带有公式的字符串并使用预定义的值进行评估.这是使用python parser模块的方法:
x = 8
code = parser.expr("(x + 2) / 10").compile()
print eval(code)
# prints 1
Run Code Online (Sandbox Code Playgroud)
知道如何用Go做到这一点?
nem*_*emo 10
您可能需要求助于解释数学语句的库或者必须编写自己的解析器.Python是一种动态语言,可以在运行时解析和执行python代码.标准围棋不能那样做.
如果你想自己编写一个解析器,go包将会有所帮助.示例(正在播放):
import (
"go/ast"
"go/parser"
"go/token"
)
func main() {
fs := token.NewFileSet()
tr, _ := parser.ParseExpr("(3-1) * 5")
ast.Print(fs, tr)
}
Run Code Online (Sandbox Code Playgroud)
然后可以根据您的选择遍历和解释生成的AST(抽象语法树)(例如,处理'+'标记作为现在存储的值的加法).
该软件包可能会满足您的需求:https : //github.com/Knetic/govaluate
expression, err := govaluate.NewEvaluableExpression("(x + 2) / 10");
parameters := make(map[string]interface{}, 8)
parameters["x"] = 8;
result, err := expression.Evaluate(parameters);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8149 次 |
| 最近记录: |