Leksykon IT › Programowanie › defer

defer

Programowanie Svenska → Zaktualizowano: 2026-10-06

Cecha języka: odroczenie wykonania wyrażenia do momentu powrotu z otaczającej funkcji. Gwarantuje sprzątanie niezależnie od wcześniejszych powrotów czy paniki. Pierwotnie z Go (2009), mają go też Zig i Swift. Zastępuje try-finally / RAII.

Klasyka Go: defer file.Close() tuż po file, _ := os.Open(...) — zamknięcie nastąpi zawsze, nawet przy powrocie z błędem w środku funkcji. Wiele deferów wykonuje się w kolejności LIFO (stos). Częsta pułapka: defer file.Close() w pętli — zamknięcia kumulują się do końca funkcji, a uchwyty plików wyciekają. Naprawa: funkcja wewnętrzna. Swift: defer { cleanup() } działa podobnie. Zig: defer + errdefer (wykonywany tylko przy powrocie z błędem). Nowoczesny wzorzec zarządzania zasobami — czytaj jako „try-finally z Javy z lukrem składniowym”.

← Wróć do leksykonu