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

2024-11-01 17:54:01 +08:00
 xiangxiangxiang

需求如下

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

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

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

2656 次点击
所在节点    Go 编程语言
11 条回复
virusdefender
2024-11-01 17:57:05 +08:00
mightybruce
2024-11-01 17:58:07 +08:00
有比表达式引擎更强大的 interpreter
yaegi 可以了解一下

https://github.com/traefik/yaegi
xiangxiangxiang
2024-11-01 18:02:49 +08:00
@virusdefender 感谢大佬,周末调研调研
xiangxiangxiang
2024-11-01 18:03:08 +08:00
@mightybruce 感谢大佬,周末调研一哈,看能不能用
bv
2024-11-01 21:35:59 +08:00
Ayanokouji
2024-11-01 21:50:56 +08:00
wasm?
cooltechbs
2024-11-02 07:42:35 +08:00
前司搞的 https://github.com/bilibili/gengine ,语法是照着 Go 做的,但估计不符合要求,仅供参考
wkook
2024-11-02 10:04:58 +08:00
joyme
2024-11-02 15:54:27 +08:00
aisk
2024-11-02 17:26:22 +08:00
https://github.com/cosmos72/gomacro 区别就是不支持 go 的泛型语法,而是有自己一套。
Kauruus
2024-11-08 23:16:39 +08:00
实在不行你可以编译成 wasm 然后用 wazero 执行。

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1085829

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX