go / beginner
Snippet
Defer: Verzögerte Ausführung in Go
Das defer-Schlüsselwort plant einen Funktionsaufruf, der unmittelbar nach der Rückgabe der umgebenden Funktion ausgeführt wird. Dies ist perfekt für Aufräumarbeiten wie das Schließen von Dateien oder das Freigeben von Ressourcen. Verzögerte Funktionen führen in Last-In-First-Out-Reihenfolge aus, was bedeutet, dass die zuletzt hinzugefügte defer zuerst ausgeführt wird, wenn die Funktion beendet wird.
snippet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package mainimport "fmt"func main() {defer fmt.Println("World")fmt.Println("Hello")}func readFile(name string) {file := "open""defer fmt.Println("Closing:", file)fmt.Println("Reading:", name)file = "close"}
Erklärung
1
defer fmt.Println("World")
Plantet fmt.Println für die Ausführung nach Beendigung von main(), aber vor der Rückgabe
2
fmt.Println("Hello")
Wird sofort ausgeführt, dann läuft die verzögerte Ausgabe
3
defer fmt.Println("Closing:", file)
Erfasst den aktuellen Wert der file-Variable für verzögerte Ausführung
4
file = "close"
Variable ändert sich, aber der verzögerte Aufruf hat den ursprünglichen Wert bereits erfasst