tgoop.com/go_interview_lib/477
Last Update:
💬 Какие типы оператора defer существуют в Go?
📌 До Go 1.13: heap-allocated defer
До версии Go 1.13 все объекты defer
выделялись в куче. Это могло приводить к снижению производительности из-за затрат на выделение памяти в куче.
📌 Go 1.13: stack-allocated defer
С версии Go 1.13 была введена возможность выделения объектов defer
в стеке. Это позволило улучшить производительность за счет уменьшения затрат на выделение памяти.
📌 Go 1.13+: open-coded defer
Также с версии Go 1.13 была введена оптимизация для встраивания defer
в конец функции и перед каждым оператором return
. Это значительно улучшило производительность, но применимо только в ограниченных кейсах, например, когда количество defer-операторов невелико (не более 8) и нет динамических конструкций, таких как циклы.
📌 Go 1.22: heap-allocated defer в циклах
В Go 1.22, если defer
используется внутри цикла, он по-прежнему выделяется в куче, поскольку количество объектов defer
может динамически меняться во время выполнения.
👉 Подробнее
BY Библиотека Go для собеса | вопросы с собеседований

Share with your friend now:
tgoop.com/go_interview_lib/477