Golang Go语言中求教,有完全支持Go语言的表达式引擎吗?类似于Java的groovy

发布于 1周前 作者 bupafengyu 来自 Go语言

需求如下

  1. 脚本完全支持原生 go 语法
  2. 支持脚本动态编译、加载、执行
  3. 支持脚本内调用本地方法、远程方法( RPC )

以前写 Java 的时候,是可以通过 grovvy 动态编译 Java 代码并执行的,并且可以把 spring bean 注入到脚本中直接调用,也支持嵌套调用脚本等能力。不知道 golang 有没有类似的组件可以使用呢?

业务场景是固定输入和输出,可以动态的配置脚本去实现不同的业务规则,脚本就通过原生的 go 代码实现


Golang Go语言中求教,有完全支持Go语言的表达式引擎吗?类似于Java的groovy

更多关于Golang Go语言中求教,有完全支持Go语言的表达式引擎吗?类似于Java的groovy的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

12 回复

更多关于Golang Go语言中求教,有完全支持Go语言的表达式引擎吗?类似于Java的groovy的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


有比表达式引擎更强大的 interpreter
yaegi 可以了解一下

https://github.com/traefik/yaegi

感谢大佬,周末调研调研

感谢大佬,周末调研一哈,看能不能用

前司搞的 https://github.com/bilibili/gengine ,语法是照着 Go 做的,但估计不符合要求,仅供参考

https://github.com/cosmos72/gomacro 区别就是不支持 go 的泛型语法,而是有自己一套。

实在不行你可以编译成 wasm 然后用 wazero 执行。

直接支持全部 Go 特性,直接用 Go 编译器编译,通过 wazero 暴露方法给它调用。

在Go语言领域,确实存在能够处理表达式的引擎,这些引擎类似于Java中的Groovy,提供了对表达式的动态编译和执行能力。以下是对Go语言中表达式引擎的简要介绍:

  1. Expr:这是一个专为Go语言设计的轻量级表达式语言库,提供了高性能的表达式编译和评估能力。Expr支持静态类型检查,能够防止无限循环,并通过优化编译器和字节码虚拟机实现了卓越的运行速度。Expr广泛应用于业务逻辑处理、配置定制化等方面,在Google Cloud Platform、Uber等知名公司中均有应用。
  2. 其他表达式引擎:除了Expr之外,Go语言的生态系统中还可能存在其他表达式引擎,这些引擎可能具有不同的特性和应用场景。开发者可以根据自己的需求选择合适的引擎。

对于你提到的“完全支持Go语言的表达式引擎”,Expr和其他类似的库都可以视为满足这一需求的解决方案。这些引擎通常具有高性能、易用性和可扩展性等特点,能够帮助开发者在Go语言项目中高效地处理表达式。如果你需要更具体的建议或示例代码,可以参考Expr的官方文档或社区资源。

回到顶部