Behandeln von Fehlern beim Zurückstellen von Funktionen mit Rückgabewerten
Der golang/errcheck-Linter warnt, wenn eine Funktion zurückgestellt wird, die einen Wert zurückgibt, ohne den Fehler zu überprüfen . Um dies zu beheben, muss der Rückgabewert gespeichert werden, was das Zurückstellen einer anderen Funktion erfordert, die die ursprüngliche Funktion aufruft.
Ein Ansatz besteht darin, eine anonyme Funktion zu verwenden, wie unten gezeigt:
<code class="go">defer func() { if err := r.Body.Close(); err != nil { fmt.Println("Error when closing:", err) } }()</code>
Alternativ kann eine Hilfsfunktion definiert werden:
<code class="go">func Check(f func() error) { if err := f(); err != nil { fmt.Println("Received error:", err) } }</code>
die wie folgt verwendet werden kann:
<code class="go">defer Check(r.Body.Close)</code>
Für mehrere verzögerte Funktionsaufrufe kann eine modifizierte Hilfsfunktion erstellt werden, die mehrere Funktionen akzeptiert :
<code class="go">func Checks(fs ...func() error) { for i := len(fs) - 1; i >= 0; i-- { if err := fs[i](); err != nil { fmt.Println("Received error:", err) } } }</code>
Zusätzlich verwendet die Checks()-Funktion eine Abwärtsschleife, um die Ausführungsreihenfolge verzögerter Funktionen in der Reihenfolge „First-in-last-out“ widerzuspiegeln.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit Fehlern um, wenn ich in Go Funktionen mit Rückgabewerten zurückstelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!