Heim >Backend-Entwicklung >Golang >Wie kann ich mehrere Fehler beim JSON-Marshalling von Go elegant behandeln?

Wie kann ich mehrere Fehler beim JSON-Marshalling von Go elegant behandeln?

DDD
DDDOriginal
2024-12-01 21:22:11675Durchsuche

How Can I Eleganly Handle Multiple Errors in Go's JSON Marshaling?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn