Heim > Backend-Entwicklung > Golang > Was passiert mit verzögerten Funktionsargumenten in Go?

Was passiert mit verzögerten Funktionsargumenten in Go?

DDD
Freigeben: 2024-12-20 12:37:11
Original
633 Leute haben es durchsucht

What Happens to Deferred Function Arguments in Go?

Auswerten verzögerter Funktionsargumente

Frage: In einem Zitat in The Tour of Go heißt es: „Die Argumente des verzögerten Aufrufs werden sofort ausgewertet.“ Was bedeutet das und was wird eigentlich ausgewertet?

Antwort:

In Go verzögern Verzögerungsanweisungen die Ausführung einer Funktion, bis die einschließende Funktion zurückkehrt. Die Auswertung der Argumente der verzögerten Funktion erfolgt jedoch sofort.

Aufschlüsselung des Auswertungsprozesses:

In der Spezifikation heißt es für jede „defer“-Anweisung:

  • Funktionswert: Die zu verschiebende Funktion wird als ausgewertet üblich.
  • Parameter: Die Parameter zur verzögerten Funktion werden ebenfalls sofort ausgewertet.

Der eigentliche Funktionsaufruf wird erst ausgeführt, wenn die umgebende Funktion zurückkehrt.

Beispiel:

Bedenken Sie Folgendes Code:

func def(s string) func() {
    fmt.Println("tier up")
    fmt.Println(s)
    return func() { fmt.Println("clean up") }
}

func main() {
    defer def("defered line")()
    fmt.Println("main")
}
Nach dem Login kopieren

Auswertungssequenz:

  1. def() Argumente Auswertung: Der Parameter „defered line“ wird sofort ausgewertet .
  2. def()-Funktionsauswertung: Die def()-Funktion wird aufgerufen und gedruckt „Tier up“ und „defered line“.
  3. Auswertung der verzögerten Funktion: Der Rückgabewert von def() wird ausgewertet, einer Funktion, die „Aufräumen“ ausgibt.
  4. Verzögerte Funktionsausführung: Wenn main() zurückkehrt, wird die verzögerte Funktion ausgeführt und „sauber“ ausgegeben up.“

Fazit:

Wenn eine Defer-Anweisung verwendet wird, werden die Parameter der Deferred-Funktion sofort ausgewertet. Dieser Prozess stellt sicher, dass die Funktion bei ihrer Ausführung Zugriff auf die aktuellsten Werte der Variablen hat. Die tatsächliche Ausführung der verzögerten Funktion wird jedoch verzögert, bis die umgebende Funktion zurückkehrt.

Das obige ist der detaillierte Inhalt vonWas passiert mit verzögerten Funktionsargumenten in Go?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage