Heim >Backend-Entwicklung >Golang >Wie kann ich verzögerte Funktionen mit zurückgegebenen Variablen in Go fehlerfrei verarbeiten?
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>
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>
Verwendung:
<code class="go">defer Check(r.Body.Close)</code>
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>
Verwendung:
<code class="go">defer Checks(r.Body.Close, SomeOtherFunc)</code>
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!