Eleganter Umgang mit mehreren Fehlern in Go
In Go kann der Umgang mit mehreren Fehlern umständlich werden, wenn zahlreiche Vorgänge zu Fehlern führen können. Eine Möglichkeit, dieses Problem zu beheben, besteht darin, den vom Fehlertyp bereitgestellten Schlüsselwertspeicher zu nutzen.
Bedenken Sie den folgenden Codeausschnitt:
aJson, err1 := json.Marshal(a) bJson, err2 := json.Marshal(b) cJson, err3 := json.Marshal(c) dJson, err4 := json.Marshal(d) eJson, err5 := json.Marshal(e) fJson, err6 := json.Marshal(f) gJson, err4 := json.Marshal(g) if err1 != nil { return err1 } else if err2 != nil { return err2 } else if err3 != nil { return err3 } else if err4 != nil { return err4 } else if err5 != nil { return err5 } else if err5 != nil { return err5 } else if err6 != nil { return err6 }
Die Fehlerbehandlung dieses Codes ist repetitiv und ausführlich. Um es zu optimieren, können wir eine Funktion verwenden, die einen Zielzeiger und eine Quellschnittstelle akzeptiert. Diese Funktion versucht, die Quelle zum Ziel zumarshallen und gibt einen Fehler zurück, wenn dies fehlschlägt. Wir können diese Funktion dann mit all unseren Quellen verwenden und die Fehler zu einem einzigen Fehler zusammenfassen. So können wir dies erreichen:
var err error f := func(dest *D, src S) bool { *dest, err = json.Marshal(src) return err == nil } // EDIT: removed () f(&aJson, a) && f(&bJson, b) && f(&cJson, c) && f(&dJson, d) && f(&eJson, e) && f(&fJson, f) && f(&gJson, g) return err
Dieser Ansatz kombiniert auf elegante Weise mehrere Fehler in einer einzigen Fehlervariablen. Es vereinfacht die Fehlerbehandlung, verbessert die Lesbarkeit des Codes und erleichtert die Fehlerbehandlung innerhalb von Schleifen und anderen komplexen Szenarien.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Fehler in Go elegant behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!