Heim >Backend-Entwicklung >Golang >Wie gehen benannte Rückgaben in Go anders mit Paniken um als normale Rückgaben?
Warum kann eine normale Rückgabe eine Panik verbergen, die eine benannte Rückgabe dem Anrufer korrekt vermittelt?
In Go initialisiert die Rückgabeanweisung alles Ergebnisparameter auf ihre Nullwerte zurücksetzen, bevor verzögerte Funktionen ausgeführt werden. Wenn benannte Ergebnisparameter vorhanden sind und die Return-Anweisung nicht erreicht wird, behalten diese benannten Parameter den Nullwert.
Dieses Verhalten wird im bereitgestellten Beispiel demonstriert:
func NormalReturns(n int) error { var err error defer catch(&err) panicIf42(n) return err }
Hier wird der Die Variable err wird auf Null initialisiert, aber da die Return-Anweisung aufgrund einer Panik nicht erreicht wird, bleibt sie Null. Obwohl defer Catch() err ändert, spiegelt sich diese Änderung nicht im zurückgegebenen Wert wider, da die return-Anweisung eine leere Ausdrucksliste angibt.
Im Gegensatz dazu ermöglichen benannte Rückgaben verzögerten Funktionen, Rückgabewerte nach der Rückgabe zu ändern Anweisung und bevor Sie zum Anrufer zurückkehren. Dies wird in der folgenden Funktion veranschaulicht:
func NamedReturns(n int) (err error) { defer catch(&err) panicIf42(n) return }
In diesem Fall wird err auf Null initialisiert, aber der verzögerte Catch() kann ihn ändern, bevor die Funktion zurückkehrt. Infolgedessen wird jeder err zugewiesene Wert ungleich Null an den Aufrufer zurückgegeben.
Dieses Verhalten verdeutlicht den Hauptunterschied zwischen benannten und normalen Rückgaben. Mit benannten Rückgaben können verzögerte Funktionen die Rückgabewerte ändern und so sicherstellen, dass relevante Informationen auch im Panikfall an den Aufrufer zurückgesendet werden.
Das obige ist der detaillierte Inhalt vonWie gehen benannte Rückgaben in Go anders mit Paniken um als normale Rückgaben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!