Wie kann ich verzögerte Funktionen mit zurückgegebenen Variablen in Go fehlerfrei verarbeiten?

Mary-Kate Olsen
Freigeben: 2024-11-04 08:22:01
Original
801 Leute haben es durchsucht

How Can I Handle Deferred Functions with Returned Variables in Go without Errors?

gometalinter / errcheck und verzögerte Funktionen mit zurückgegebenen Variablen

gometalinter und errcheck-Tools lösen eine Warnung aus, wenn eine Funktion, die eine Variable zurückgibt, zurückgestellt wird. Dies liegt daran, dass die Rückgabewerte verzögerter Funktionen verworfen werden, sodass die zurückgegebene Fehlervariable nicht überprüft wird.

Der empfohlene Ansatz besteht darin, eine andere Funktion zu verschieben, die die ursprüngliche Funktion aufruft und ihren Rückgabewert verarbeitet. Dies kann mithilfe einer anonymen Funktion wie folgt erfolgen:

<code class="go">defer func() {
    if err := r.Body.Close(); err != nil {
        fmt.Println("Error when closing:", err)
    }
}()</code>
Nach dem Login kopieren

Alternativ können Sie eine Hilfsfunktion zur Fehlerprüfung erstellen:

<code class="go">func Check(f func() error) {
    if err := f(); err != nil {
        fmt.Println("Received error:", err)
    }
}</code>
Nach dem Login kopieren

Verwendung:

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

Für mehrere verzögerte Funktionen sollten Sie eine Hilfsfunktion in Betracht ziehen, die mehrere Funktionen übernimmt:

<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

Verwendung:

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

Beachten Sie, dass die Abwärtsschleife in Checks() die Ausführungsreihenfolge nachahmt von verzögerten Funktionen (last-in-first-out).

Das obige ist der detaillierte Inhalt vonWie kann ich verzögerte Funktionen mit zurückgegebenen Variablen in Go fehlerfrei verarbeiten?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!