Wie kann man Funktionen mit potenziell ungeprüften Rückgabewerten in Go sicher verschieben?

Susan Sarandon
Freigeben: 2024-11-02 01:00:30
Original
864 Leute haben es durchsucht

How to Safely Defer Functions with Potentially Unchecked Return Values in Go?

Verzögerte Funktionen mit ungeprüften Rückgabewerten verwalten

Bei der Verwendung von gometalinter und errcheck können Entwickler auf Warnungen bezüglich der Verzögerung von Funktionen stoßen, die eine Variable ohne Überprüfung zurückgeben für Fehler. Dies tritt typischerweise in Szenarien wie dem Schließen eines Anforderungshauptteils auf, in denen die Close()-Methode einen Fehlerwert zurückgibt.

Um dieses Problem zu beheben, besteht der empfohlene Ansatz darin, eine andere Funktion zu verschieben, die die ursprüngliche Funktion aufruft und ihre Rückgabe überprüft Wert. Dies kann mithilfe einer anonymen Funktion wie folgt erreicht werden:

<code class="go">defer func() {
    if err := r.Body.Close(); err != nil {
        // Handle the error
    }
}()</code>
Nach dem Login kopieren

Eine alternative Lösung besteht darin, eine Hilfsfunktion zu erstellen, die die Fehlerprüfung durchführt:

<code class="go">func Check(f func() error) {
    if err := f(); err != nil {
        // Handle the error
    }
}</code>
Nach dem Login kopieren

Diese Hilfsfunktion kann dann kann verwendet werden, um die ursprüngliche Funktion zu verschieben:

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

Für mehrere verzögerte Funktionen kann ein modifizierter Helfer erstellt werden, um eine Reihe von Funktionen zu akzeptieren:

<code class="go">func Checks(fs ...func() error) {
    // Implement error checking and execution logic
}</code>
Nach dem Login kopieren

Verwendung dieses Helfers:

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

Die Abwärtsschleife im Checks()-Helfer stellt sicher, dass die letzte verzögerte Funktion zuerst ausgeführt wird, wodurch die Ausführungsreihenfolge der verzögerten Funktionen erhalten bleibt.

Das obige ist der detaillierte Inhalt vonWie kann man Funktionen mit potenziell ungeprüften Rückgabewerten in Go sicher verschieben?. 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!