V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
xiangxiangxiang
V2EX  ›  Go 编程语言

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

  •  
  •   xiangxiangxiang · 33 天前 · 1802 次点击
    这是一个创建于 33 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求如下

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

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

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

    11 条回复    2024-11-08 23:16:40 +08:00
    virusdefender
        1
    virusdefender  
       33 天前   ❤️ 1
    mightybruce
        2
    mightybruce  
       33 天前   ❤️ 2
    有比表达式引擎更强大的 interpreter
    yaegi 可以了解一下

    https://github.com/traefik/yaegi
    xiangxiangxiang
        3
    xiangxiangxiang  
    OP
       33 天前
    @virusdefender 感谢大佬,周末调研调研
    xiangxiangxiang
        4
    xiangxiangxiang  
    OP
       33 天前
    @mightybruce 感谢大佬,周末调研一哈,看能不能用
    Ayanokouji
        6
    Ayanokouji  
       33 天前   ❤️ 1
    wasm?
    cooltechbs
        7
    cooltechbs  
       33 天前   ❤️ 1
    前司搞的 https://github.com/bilibili/gengine ,语法是照着 Go 做的,但估计不符合要求,仅供参考
    wkook
        8
    wkook  
       33 天前   ❤️ 1
    joyme
        9
    joyme  
       32 天前   ❤️ 1
    aisk
        10
    aisk  
       32 天前   ❤️ 1
    https://github.com/cosmos72/gomacro 区别就是不支持 go 的泛型语法,而是有自己一套。
    Kauruus
        11
    Kauruus  
       26 天前
    实在不行你可以编译成 wasm 然后用 wazero 执行。

    直接支持全部 Go 特性,直接用 Go 编译器编译,通过 wazero 暴露方法给它调用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5521 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:46 · PVG 14:46 · LAX 22:46 · JFK 01:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.