Wie kann ich von einer übergeordneten Funktion in Go zurückkehren, nachdem eine untergeordnete Funktion ausgeführt wurde?

Mary-Kate Olsen
Freigeben: 2024-11-16 00:39:02
Original
150 Leute haben es durchsucht

How Can I Return from a Parent Function in Go After a Child Function Executes?

Rückkehr von einer untergeordneten Funktion innerhalb einer übergeordneten Funktion

Man kann auf eine Situation stoßen, in der man von einer übergeordneten Funktion zurückkehren möchte, wenn man a anruft Kinderfunktion. In diesem Szenario besteht das Ziel darin, die Ausführung in der übergeordneten Funktion apiEndpoint() zu beenden, wenn eine bestimmte Bedingung in der untergeordneten Funktion apiResponse() erfüllt ist.

Das Problem

Verwendung des bereitgestellten Code-Snippets:

func apiEndpoint() {
    if false {
        apiResponse("error")
        // Return execution in parent function
        // Skip execution of apiResponse("all good")
    }

    apiResponse("all good")
}

func apiResponse(message string) {
    // Returns message to user via JSON
}
Nach dem Login kopieren

Die Absicht besteht darin, dass apiResponse("error") die Ausführung von beendet apiEndpoint(), sodass apiResponse("all good") nicht ausgeführt wird. Das Standardverhalten in Go besteht jedoch darin, dass eine Funktion den Ausführungsfluss außerhalb ihres Gültigkeitsbereichs nicht steuern kann.

Auflösung

Um das gewünschte Ergebnis zu erzielen, gibt es mehrere Ansätze:

1. Verwenden Sie if-Else-Anweisungen

Wenn die Bedingung einfach genug ist, kann die if-else-Struktur verwendet werden, um die explizite return-Anweisung zu vermeiden:

func apiEndpoint() {
    if someCondition {
        apiResponse("error")
    } else {
        apiResponse("all good")
    }
}
Nach dem Login kopieren

2. Rückkehr vom Aufrufer mithilfe von Werten

Wenn beide Funktionen Werte zurückgeben, können Sie eine einzige Codezeile verwenden, um den entsprechenden Wert von der Aufruferfunktion zurückzugeben:

func apiEndpoint() int {
    if someCondition {
        return apiResponse("error")
    }

    return apiResponse("all good")
}

func apiResponse(message string) int {
    return 1 // Return an int
}
Nach dem Login kopieren

Hinweis

Auch wenn Panik eine weitere Ausnahme ist, die die Ausführung stoppen kann, wird sie in diesem Zusammenhang nicht als geeignete Lösung angesehen und sollte Ausnahmefällen vorbehalten bleiben Situationen.

Das obige ist der detaillierte Inhalt vonWie kann ich von einer übergeordneten Funktion in Go zurückkehren, nachdem eine untergeordnete Funktion ausgeführt wurde?. 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