Heim >Backend-Entwicklung >Golang >Wie kann ich mehrere Fehler beim JSON-Marshalling von Go elegant behandeln?
Fehlerbehandlung in Go elegant gemacht
In Go kann es schwierig sein, mehrere Fehler effizient zu behandeln. Betrachten Sie 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 }
Dieser Code bietet eine umfassende Fehlerprüfung, sein Handhabungsansatz ist jedoch umständlich. Gibt es eine elegantere Möglichkeit, mit diesen Fehlern umzugehen?
Glücklicherweise gibt es eine. Durch die Nutzung der Leistungsfähigkeit von Abschlüssen und einer gemeinsam genutzten Fehlervariablen können wir eine präzise Fehlerbehandlung 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
In diesem aktualisierten Code definieren wir einen Abschluss f, der das JSON-Marshalling und die Fehlerprüfung für eine bestimmte Quelle übernimmt und Ziel. Durch die Verwendung des &&-Operators zur Verkettung dieser Aufrufe können wir sie nacheinander ausführen und der erste aufgetretene Fehler wird in der gemeinsam genutzten err-Variablen erfasst. Dadurch können wir alle Fehler auf einmal behandeln und so die Lesbarkeit und Wartbarkeit des Codes erheblich verbessern.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Fehler beim JSON-Marshalling von Go elegant behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!