Heim >Backend-Entwicklung >Golang >Wie gehen benannte Rückgaben in Go anders mit Paniken um als normale Rückgaben?

Wie gehen benannte Rückgaben in Go anders mit Paniken um als normale Rückgaben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-20 02:14:02787Durchsuche

How Do Named Returns in Go Handle Panics Differently Than Normal Returns?

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!

Stellungnahme:
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