我是新手,发现错误处理非常冗长。我已经阅读了它的推理并且大多同意,但是在某些地方,处理错误的代码似乎比实际工作要多。这是一个(人为的)示例,我在其中管道“Hello world!” 进入 cat 并读取并打印输出。基本上每一行都有另外三个来处理错误,我什至什么都没有处理。
package main
import "fmt"
import "io"
import "io/ioutil"
import "os/exec"
func main() {
cmd := exec.Command("cat", "-")
stdin, err := cmd.StdinPipe()
if err != nil {
return
}
stdout, err := cmd.StdoutPipe()
if err != nil {
return
}
err = cmd.Start()
if err != nil {
return
}
_, err = io.WriteString(stdin, "Hello world!")
if err != nil {
return
}
err = stdin.Close();
if err != nil {
return
}
output, err := ioutil.ReadAll(stdout)
if err != nil {
return
}
fmt.Println(string(output))
return
}
有没有一种惯用的、干净的方式来处理这个问题?我只是觉得我错过了一些东西。