传递要在go应用程序中评估的表达式?

时间:2016-08-30 01:41:17

标签: go lua eval

我有一个go命令行应用程序,它有一个搜索功能来扫描对象列表(结构)。我希望能够调用该搜索功能,即不仅仅是

mycmd search bob

也许我能做到:

mycmd search 'o.Name() == "bob"'
mycmd search 'len(o.PhoneNumbers()) > 1'
mycmd search 'strings.Index(o.Name(), "bob") >= 0'

是否可以在go代码的循环中处理这样的表达式?如果这是不可能的,在GO中处理这个问题的最简单和最标准的方法是什么,而不创建我自己的表达式语言/评估者?

(我可以看到我们有类似go-v8golua的内容,但我不确定这是否是正确的思考方式?)

注意:是个人脚本,安全问题超出了范围。

1 个答案:

答案 0 :(得分:1)

也许您可以使用text.template套餐来评估您的输入 然后解析它的输出以获得输入表达式的结果。

这是一些Go构建工具。例如,docker inspect使用它来格式化其输出。