Go では、エラー処理は不可欠な練習です。ただし、各エラーには明示的なチェックと処理が必要になるため、複数のエラーを処理するとコードが冗長になる可能性があります。この記事では、テキストを cat にパイプする不自然な例を検討し、複数のエラーを効率的に管理する問題に対処します。
提供される例では、exec.Command を使用してデータをパイプします。 cat を実行して出力を読み取ります。元のコードの各行には、エラー処理専用の 3 つの追加行が含まれており、その結果、かなりの量のエラー処理コードが作成されます。
コードの可読性を損なうことなく、責任を持ってエラーを処理するよう努めています。 。慣用的な解決策は次のとおりです:
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) }
このリファクタリングされたコードは、より簡潔な方法でエラー処理を利用しています:
このアプローチを採用することで、効果的に不必要なコードの重複を発生させずに複数のエラーを処理します。この手法により、コードの可読性が向上し、適切なエラー処理が保証されながら定型文が削減されます。
以上がGo プログラマはどのようにして複数のエラーを同時に効率的に管理できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。