Golang verfügt über eine spezielle Steueranweisung, nämlich defer. Die defer-Anweisung wird verwendet, um den Aufruf der angegebenen Funktion zu verzögern, z. B. die Freigabe von Ressourcen usw. Sie wird ausgeführt das Ende der Funktion, aber Bevor wir zurückkehren , schauen wir uns zunächst den Code an, um ein kurzes Verständnis zu erhalten: (Empfohlenes Lernen: go)
package main func main() { test() }func test() { println("test1") defer func() { println("defer test2") }() println("test3") }
Die Ausführung Die Ergebnisse lauten wie folgt:
test1 test3 defer test2
Es ist klar, dass die Funktion mit Verzögerung zuletzt ausgeführt wird
Ändern Sie nun den Code, um den Code in Panik zu versetzen, wenn eine Ausnahme ausgelöst wird , wird die Defer-Funktion weiterhin ausgeführt?
package main func main() { test() }func test() { println("test1") panic("panic") defer func() { println("defer test2") }() println("test3") }
Ausgabe
test1 panic: panic Process finished with exit code 2
Die Verzögerungsfunktion wird nicht ausgeführt. Das liegt daran, dass Panik vor der Verzögerungsfunktion liegt. Ändern Sie den Code wie folgt:
package main func main() { test() }func test() { println("test1") defer func() { println("defer test2") }() panic("panic") println("test3") }
Ausgabe
test1 defer test2 panic: panic
Die Verzögerungsfunktion wird ausgeführt, und Sie kann Panic sehen Die verzögerte Funktion kann nicht vor der verzögerten Funktion ausgeführt werden, schließlich wird eine Ausnahme ausgelöst.
Das obige ist der detaillierte Inhalt vonWann wird Golang Defer ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!