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

我有一个 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-v8and的东西golua,但是我不确定这是否是正确的思考方式?)


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


千万里不及你
浏览 189回答 1
1回答

慕工程0101907

也许您可以使用该text.template软件包来评估您的输入。稍后解析它的输出以获取输入表达式的结果。这是一些 Go 构建工具所做的。例如docker inspect,使用它来格式化其输出。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go