一尘不染

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

go

在我的项目中,我需要动态编写一些go代码,并需要测试代码是否有效。因此需要使用“ os.exec”功能来调用“ go build”命令。

当我在’/data/test/mycode.go’这样的临时目录中编写go代码时。而我尝试调用“开始构建”,则返回错误,例如“无此类文件或目录”。我怎样才能正确地做到这一点?谢谢大家:)

下面是一些代码

// 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”。它可以工作。


阅读 308

收藏
2020-07-02

共1个答案

一尘不染

fmt.Sprintf("%s/go build /data/test/mycode.go", goPath) string
返回内部由blanc空间分隔的单个字符串,但返回单个字符串。

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

2020-07-02