V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
xiangxiangxiang

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

  •  
  •   xiangxiangxiang · Nov 1, 2024 · 3059 views
    This topic created in 543 days ago, the information mentioned may be changed or developed.

    需求如下

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

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

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

    11 replies    2024-11-08 23:16:40 +08:00
    virusdefender
        1
    virusdefender  
       Nov 1, 2024   ❤️ 1
    mightybruce
        2
    mightybruce  
       Nov 1, 2024   ❤️ 2
    有比表达式引擎更强大的 interpreter
    yaegi 可以了解一下

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

    直接支持全部 Go 特性,直接用 Go 编译器编译,通过 wazero 暴露方法给它调用。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4866 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 85ms · UTC 09:56 · PVG 17:56 · LAX 02:56 · JFK 05:56
    ♥ Do have faith in what you're doing.