← ALB News · curated headline

Как Go выбирает механизм defer: open-coded, stack и heap

Habr · RU · Programming · 10/29/2026, 8:45:39 AM

Про defer в Go до сих пор говорят, что он медленный и в горячем коде ему не место. Когда-то так и было: до Go 1.13 каждый defer означал аллокацию в куче. Но с тех пор компилятор научился реализовывать его тремя способами: open-coded, stack и heap. Первые два почти ничего не стоят, а в кучу defer попадает совсем не там, где обычно думают. Разбираемся, как компилятор выбирает между ними, почему defer в цикле всегда дорогой, а рекурсия, горутины и замыкания с захватом переменных на самом деле не страшны, и как посмотреть решение компилятора одной командой. Читать далее

Continue to Habr →

You are being forwarded in 6s — stay on this page