Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在go程序中将字符串作为go代码进行求值?_Go - Fatal编程技术网

如何在go程序中将字符串作为go代码进行求值?

如何在go程序中将字符串作为go代码进行求值?,go,Go,对于任何go程序,我都希望将任何代码转换为字符串并对字符串求值 func main() { x := 10 fmt.Println(x) } 例如,对于上面的程序,我希望按如下方式运行它(我不确定Eval应该是什么)。有人能告诉我在go程序中使用eval()go代码的方法吗 func main() { x := 10 Eval("fmt.Println(x)") } 它不是内置于语言中的,但您可以使用 但是我认为它不能访问父作用域(因此获取x的值可能很棘手)G

对于任何go程序,我都希望将任何代码转换为字符串并对字符串求值

func main() {
    x := 10
    fmt.Println(x)
}
例如,对于上面的程序,我希望按如下方式运行它(我不确定
Eval
应该是什么)。有人能告诉我在go程序中使用eval()go代码的方法吗

func main() {
    x := 10
    Eval("fmt.Println(x)")
}

它不是内置于语言中的,但您可以使用


但是我认为它不能访问父作用域(因此获取
x
的值可能很棘手)

Go没有代码评估功能。如何安装
interp
stdlib
来测试您的程序?谢谢
package main

import (
  "github.com/containous/yaegi/interp"
  "github.com/containous/yaegi/stdlib"
)

func main() {
  i := interp.New(interp.Options{})

  i.Use(stdlib.Symbols)

  _, err := i.Eval(`import "fmt"`)
  if err != nil {
    panic(err)
  }

  _, err = i.Eval(`fmt.Println("Hello Yaegi")`)
  if err != nil {
    panic(err)
  }
}