Heim >Backend-Entwicklung >Golang >Wie können Go-Programmierer mehrere Fehler gleichzeitig effizient verwalten?
In Go ist die Fehlerbehandlung eine wesentliche Praxis. Allerdings kann die Behandlung mehrerer Fehler zu ausführlichem Code führen, da jeder Fehler eine explizite Prüfung und Behandlung erfordert. In diesem Artikel wird ein künstliches Beispiel für die Weiterleitung von Text an cat untersucht und das Problem der effizienten Verwaltung mehrerer Fehler behandelt.
Das bereitgestellte Beispiel beinhaltet die Verwendung von exec.Command zum Weiterleiten von Daten cat und lesen Sie die Ausgabe. Jede Zeile im Originalcode enthält drei zusätzliche Zeilen, die der Fehlerbehandlung gewidmet sind, was zu einer beträchtlichen Menge an Fehlerbehandlungscode führt.
Wir streben danach, verantwortungsvoll mit Fehlern umzugehen, ohne die Lesbarkeit des Codes zu beeinträchtigen . Hier ist eine idiomatische Lösung:
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) }
Dieser überarbeitete Code nutzt die Fehlerbehandlung auf prägnantere Weise:
Mit diesem Ansatz können wir mehrere Fehler effektiv bewältigen Fehler ohne unnötige Codeduplizierung. Diese Technik fördert die Lesbarkeit des Codes, reduziert den Boilerplate und gewährleistet gleichzeitig eine ordnungsgemäße Fehlerbehandlung.
Das obige ist der detaillierte Inhalt vonWie können Go-Programmierer mehrere Fehler gleichzeitig effizient verwalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!