Grundlegendes zur Auswertung verzögerter Aufrufargumente
In Go wird die „defer“-Anweisung häufig verwendet, um sicherzustellen, dass am Ende bestimmte Aktionen ausgeführt werden eine umgebende Funktion. Es ist jedoch wichtig zu beachten, dass die an den verzögerten Aufruf übergebenen Argumente nicht sofort ausgeführt werden.
Gemäß der Go-Spezifikation „werden bei jeder Ausführung einer ‚defer‘-Anweisung der Funktionswert und die Parameter für den Aufruf angezeigt werden wie üblich ausgewertet und erneut gespeichert, aber die eigentliche Funktion wird nicht aufgerufen. Die tatsächliche Ausführung der verzögerten Funktion wird jedoch verzögert, bis die umgebende Funktion abgeschlossen ist.
BeispielerklärungBedenken Sie den folgenden Go-Code:
In diesem Beispiel: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") }
Das obige ist der detaillierte Inhalt vonWie geht Go mit der Argumentauswertung verzögerter Funktionsaufrufe um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!