Heim > Backend-Entwicklung > Golang > Wann wird Golang Defer ausgeführt?

Wann wird Golang Defer ausgeführt?

(*-*)浩
Freigeben: 2019-12-03 10:00:45
Original
2623 Leute haben es durchsucht

Wann wird Golang Defer ausgeführt?

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")
}
Nach dem Login kopieren

Die Ausführung Die Ergebnisse lauten wie folgt:

test1
test3
defer test2
Nach dem Login kopieren

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")
}
Nach dem Login kopieren

Ausgabe

test1
panic: panic
Process finished with exit code 2
Nach dem Login kopieren

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")
}
Nach dem Login kopieren

Ausgabe

test1
defer test2
panic: panic
Nach dem Login kopieren

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!

Verwandte Etiketten:
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