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

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

最佳答案

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

os/exec.Command(名称字符串, arg ...string) *Cmd 期待一些争论。它不会自己分割一根弦。

关于go - 从 golang os.exec 调用 'go build' 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28298154/

相关文章:

go - 如何模块化处理函数和路由

go - 可重新配置的函数变量

去 1.13 : gcc-5 not in PATH

vim - 是否可以在vim中为go代码和注释设置不同的文本宽度?

go - 使用 Docker 获取包超时 - "golang.org/x/net/context/ctxhttp"

go - 输入字符串而不是整数时,停止控制台多次打印同一条消息

azure - 如何使用 Azure SDK for Golang 获取 SP 到期日期?

go - golang 中是否有用于命令行解释器的内置包?

sockets - 如何处理 go 中的粘性 tcp 数据包?

json - 当我们在 golang 中将空 Json 解码为结构时会发生什么?