我正在开发一个应用程序,它允许用户比较不同字符串比较算法的执行情况。除了包含的几种算法(包括Boyer-Moore,KMP和其他"传统")之外,我还想允许用户输入自己的算法(这些算法可能是他们自己的算法或对现有算法的修改)来比较它们。
Go中是否有某种方法可以从用户那里获取代码(例如,来自HTML textarea)并执行它?
更具体地说,我想要以下特征:
(在这种情况下,我并不担心恶意代码的安全性,因为用户只会在自己的机器上执行我的程序,所以安全是他们自己的责任。)
如果不能用Go本地执行此操作,我可以使用以下语言之一嵌入比较函数(按优先顺序):JavaScript,Python,Ruby,C。有什么办法吗?做其中任何一个?
答案 0 :(得分:1)
明确的号码
但你可以做一些奇特的东西:为什么不重新编译程序,包括用户提供的代码? 将这些内容分成两部分:一个收集用户代码的驱动程序,重新编译实际代码,执行实际代码并报告结果。
可以包括其他语言的其他口译员,例如Otto是一个Javascript解释器。 (C很难:-)
答案 1 :(得分:1)
您是否考虑过与gopherjs playground类似的事情?根据{{3}},编译正在客户端完成。