Sobes.tech
Назад к вопросам
Middle
1

Что такое defer и для чего используется? В каком порядке выполняются defer-вызовы, если их несколько в одной функции?

Компании, где спрашивали
Effective Technologies

Ответ от нейросети

sobes.tech AI

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

Если в одной функции несколько defer-вызовов, они выполняются в обратном порядке их объявления (стековый порядок). То есть последний объявленный defer выполнится первым.

Пример:

func example() {
    defer fmt.Println("Первый defer")
    defer fmt.Println("Второй defer")
    fmt.Println("В теле функции")
}
// Вывод будет:
// В теле функции
// Второй defer
// Первый defer