Sobes.tech
Senior

Kiedy zostanie wywołana odłożona funkcja defer? (przy wyjściu z lokalnego bloku / przy wyjściu z funkcji / przy zakończeniu aplikacji)

sobes.tech AI

Odpowiedź od AI

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

Важно:

  • defer срабатывает при выходе из всей функции, а не из локального блока внутри функции.
  • Если defer объявлен внутри цикла или блока, он всё равно выполнится при выходе из функции.

Пример:

func example() {
    defer fmt.Println("Отложенная функция выполнится при выходе из example")
    fmt.Println("В теле функции")
}

Здесь отложенная функция вызовется после того, как example завершит выполнение.