defer
Sprachfeature: Ausführung eines Ausdrucks aufschieben, bis die umschließende Funktion zurückkehrt. Garantiert Aufräumarbeiten unabhängig von frühen Returns oder Panics. Go-Original (2009), auch in Zig und Swift. Ersatz für try-finally bzw. RAII.
Klassisches Go: defer file.Close() direkt nach file, _ := os.Open(...) — das Schließen passiert garantiert, selbst bei einem Error-Return mitten in der Funktion. Mehrere defer-Aufrufe laufen in LIFO-Reihenfolge (Stack-basiert). Häufige Falle: defer file.Close() in einer Schleife — die Close-Aufrufe stapeln sich bis zum Funktionsende, Datei-Handles laufen leer. Abhilfe schafft eine innere Funktion. Swift kennt defer { cleanup() } ganz ähnlich. Zig hat defer und zusätzlich errdefer, das nur bei einem Error-Return läuft. Ein modernes Ressourcenmanagement-Muster, am ehesten zu lesen als "Java-try-finally mit syntaktischem Zucker".