Wie gehe ich mit Fehlern um, wenn ich in Go Funktionen mit Rückgabewerten zurückstelle?

Patricia Arquette
Freigeben: 2024-11-03 01:18:29
Original
871 Leute haben es durchsucht

How to Handle Errors When Deferring Functions with Return Values in Go?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

die wie folgt verwendet werden kann:

<code class="go">defer Check(r.Body.Close)</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage