In Go kann die Fehlerbehandlung mühsam werden, wenn es um zahlreiche potenzielle Fehler geht. Betrachten Sie beispielsweise den folgenden Code:
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 sehr repetitiv und schwierig zu warten. Ein saubererer und effizienterer Ansatz besteht darin, einen Abschluss zu verwenden, um alle Fehler auf einmal zu behandeln:
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 Funktionszeiger f kapselt die Fehlerbehandlungslogik und vereinfacht die Hauptfunktion durch Verketten von Aufrufen und Zurückgeben des ersten Nicht-Fehlers -nil-Fehler aufgetreten. Durch die Implementierung dieser Technik erreichen Sie eine präzisere und elegantere Fehlerbehandlung.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Fehler in Go ordnungsgemäß behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!