如何从字符串动态运行go代码?

时间:2019-09-04 10:05:29

标签: go

我需要动态执行代码,例如运行fmt.Print("hello")(以字符串格式),也许我正在寻找的是go虚拟机?

在go-playground中,我们可以键入代码并执行它,它如何在后面工作?

最糟糕的解决方案是将字符串代码写入文件并使用exec.Command("go", "run","file")进行调用。

1 个答案:

答案 0 :(得分:0)

1。游乐场

  

在go-playground中,我们可以键入代码并执行它,它如何在后面工作?

我想您大部分都回答了owm问题。

从操场上找到compileAndRun的来源很快。

  

最糟糕的解决方案是将字符串代码写入文件,然后使用exec.Command(“ go”,“ run”,“ file”)进行调用。

是的,它使用: https://github.com/golang/playground/blob/509e10fc018f6da63e433d45afbf5c21af9480a2/sandbox.go#L361

    cmd := exec.Command("go", "build", "-o", exe, buildPkgArg)

2。 Jupyter内核,gore,lgo,gophernotes和gomacro

尽管这并不意味着它必须总是这样。

我本人计划将业余时间用于:

  • 地鼠
  • lgo
  • gomacro本身就是用于gophernotes的软件包

总体:在其他语言中,这不像eval那样容易,但是没有什么可以停止实现了。

祝你好运!