Sobes.tech
Junior — Middle

Koje će se ponašanje javiti kod anonimne funkcije koja je deklarisana unutar petlje koristeći defer, na kraju svakog iterativnog koraka?

sobes.tech АИ

Одговор од АИ

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

Это значит, что все отложенные вызовы внутри цикла будут выполнены в обратном порядке после завершения всей функции, а не после каждой итерации.

Пример:

for i := 0; i < 3; i++ {
    defer fmt.Println(i)
}
// При выходе из функции будет выведено:
// 2
// 1
// 0

Если нужно, чтобы отложенная функция выполнялась в конце каждой итерации, defer внутри цикла использовать не стоит.