Go应用程序是否能够动态编译Go代码?

假设我有一个Lua程序,它接受用户输入,该输入恰好是有效的Lua源代码。当程序仍在运行时,此代码被过滤、编译和执行。是否可以使用Go实现这样的方法?

点赞
用户2558884
用户2558884

我有一个想法可以帮助你实现这个,但你基本上需要用 C 重复一遍。

Go 是一种编译型语言,所以为了达到你想要的效果,你需要在 CSP 上编写一个包装器,支持二进制文件版本控制并通过某种 RPC 导出功能。以下是步骤:

  1. 本地尝试构建 Go 代码。
  2. 启动结果。
  3. 新程序连接到当前运行程序的 RPC。
  4. 第一个程序被指示将所有 CSP 数据(通道、goroutine 调度)指向新的运行时。
  5. 外部接口切换到新的程序,在旧程序的所有goroutines 结束后,终止旧进程。

显然,这太过复杂了,你最好使用一种脚本语言,如 Ottogo-lua,以节省时间。

2017-03-30 15:37:40
用户7756161
用户7756161

我认为以下两个项目之间有足够的内容可以帮助我实现我想要的内容。虽然两者都不是完美的替代品,但都可以扩展以提供与我最初在 Lua 中使用动态编译所做的服务足够接近的服务。

https://github.com/Knetic/govaluate

https://github.com/japm/goScript

2017-03-31 10:26:58