从 golang os.exec 调用“go build”命令

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


当我在像“/data/test/mycode.go”这样的临时目录中编写 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”。它可以工作。


30秒到达战场
浏览 254回答 1
1回答

繁星点点滴滴

fmt.Sprintf("%s/go build /data/test/mycode.go", goPath) string 返回内部除以空格的单个字符串,但作为单个字符串。os/exec.Command(name string, arg ...string) *Cmd 期待一些论点。它本身不会分割一个字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go