Heim > Artikel > Backend-Entwicklung > Wie kann man Funktionen mit potenziell ungeprüften Rückgabewerten in Go sicher verschieben?
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>
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>
Diese Hilfsfunktion kann dann kann verwendet werden, um die ursprüngliche Funktion zu verschieben:
<code class="go">defer Check(r.Body.Close)</code>
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>
Verwendung dieses Helfers:
<code class="go">defer Checks(r.Body.Close, SomeOtherFunc)</code>
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!