如何在golang中将标准输出转换为字符串

如何在golang中将标准输出转换为字符串,go,Go,我有以下代码将数据从标准输出到文件: cmd := exec.Command("ls","lh") outfile, err := os.Create("./out.txt") if err != nil { panic(err) } defer outfile.Close() stdoutPipe, err := cmd.StdoutPipe() if err != nil { panic(err) } writer := bufio.NewWriter(outfile)

我有以下代码将数据从标准输出到文件:

cmd := exec.Command("ls","lh")
outfile, err := os.Create("./out.txt")
if err != nil {
    panic(err)
}
defer outfile.Close()

stdoutPipe, err := cmd.StdoutPipe()
if err != nil {
    panic(err)
}

writer := bufio.NewWriter(outfile)
defer writer.Flush()

err = cmd.Start()
if err != nil {
    panic(err)
}

go io.Copy(writer, stdoutPipe)
cmd.Wait()
我需要将stdout的输出转换成字符串值,而不是文件。我如何做到这一点

当我需要读取命令的输出并对其应用一些处理时,是否有另一个函数允许我将io.Copy行更改为go io.Copy(myStringVariable,stdoutPipe)


提前感谢

您不需要管道、书写器、goroutine等,只需使用


您可以根据需要使用
string(out)

将输出的
[]字节
转换为
字符串
。您可以将文件设置为命令的
stdout

f, err := os.Create("./out.txt")
if err != nil {
    panic(err)
}
defer f.Close()

cmd := exec.Command("ls", "-lh")
cmd.Stdout = f
cmd.Stderr = os.Stderr

if err := cmd.Run(); err != nil {
    panic(err)
}

您可以将该文件分配为命令的标准输出,并避免使用pipe和copy goroutine(在其中您会丢失读/写错误),它又短又甜!谢谢
f, err := os.Create("./out.txt")
if err != nil {
    panic(err)
}
defer f.Close()

cmd := exec.Command("ls", "-lh")
cmd.Stdout = f
cmd.Stderr = os.Stderr

if err := cmd.Run(); err != nil {
    panic(err)
}