Junior
55
questionbank

Какую роль в языке Go играет конструкция defer?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Конструкция defer используется для планирования выполнения функции после завершения объемлющей функции, независимо от того, завершилась ли она успешно или с ошибкой. Это особенно полезно для освобождения ресурсов, таких как закрытие файлов или сетевых соединений, снятие блокировок.

Функции, объявленные с defer, выполняются в порядке, обратном их объявлению (LIFO - Last In, First Out).

Пример использования для закрытия файла:

go

Пример использования для освобождения блокировки:

go

Важные моменты:

  • Аргументы функции, переданной в defer, вычисляются в момент объявления defer, а не при фактическом вызове отложенной функции.
  • Множественные defer в одной функции выполняются в порядке LIFO.
  • defer не может быть использован в глобальной области видимости.