从golang os.exec调用'go build'命令

时间:2015-02-03 11:48:05

标签: go

在我的项目中,我需要动态编写一些go代码,并且需要测试代码是否有效。所以需要调用“go build”命令使用'os.exec'函数。

当我在'/data/test/mycode.go'这样的临时目录中编写代码时。我试着调用'go build',他们返回错误为'没有这样的文件或目录'。 我怎么能正确地做到这一点?谢谢大家:))

下面是一些代码'

// is not work too
// goPath, err := exec.LookPath("go")

var out, stderr bytes.Buffer
cmd := exec.Command(fmt.Sprintf("%s/go build /data/test/mycode.go", goPath))
cmd.Stdout = &out
cmd.Stderr = &stderr
err = cmd.Run()

PS:但我直接在终端中调用命令'go build /data/test/mycode.go'。它可以工作。

1 个答案:

答案 0 :(得分:2)

fmt.Sprintf("%s/go build /data/test/mycode.go", goPath) string返回单个字符串,内部除以空格,但是单个字符串。

os/exec.Command(name string, arg ...string) *Cmd 期待很少的论点。它本身不会划分一个字符串。