Go でのエラー処理
Go でのエラー処理は、プログラミングの重要な側面です。この言語では直接的なエラー チェックと処理が奨励されており、冗長なコード処理エラーが繰り返し発生する可能性があります。
「Hello world!」をパイプする次の不自然な例を考えてみましょう。
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 }
この例には、操作ごとに複数行のエラー処理コードがあります。
Go の慣用的なアプローチは、集中的な方法でエラーを処理することです。たとえば、内部でエラーを管理するカスタム関数にパイプ操作をカプセル化できます。
package main import ( "fmt" "io" "io/ioutil" "os" "os/exec" ) func piping(input string) (string, error) { cmd := exec.Command("cat", "-") stdin, err := cmd.StdinPipe() if err != nil { return "", err } stdout, err := cmd.StdoutPipe() if err != nil { return "", err } err = cmd.Start() if err != nil { return "", err } _, err = io.WriteString(stdin, input) if err != nil { return "", err } err = stdin.Close() if err != nil { return "", err } all, err := ioutil.ReadAll(stdout) output := string(all) if err != nil { return output, err } return output, nil } func main() { in := "Hello world!" fmt.Println(in) out, err := piping(in) if err != nil { fmt.Println(err) os.Exit(1) } fmt.Println(out) }
このアプローチにより、main 関数内のエラー処理コードの量が減り、より簡潔で読みやすくなります。 .
以上が読みやすさと簡潔さのために Go のエラー処理をどのように改善できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。