Sobes.tech
Junior — Middle

¿Qué comportamiento tendrá una función anónima declarada dentro de un ciclo usando defer, al final de cada paso iterativo?

sobes.tech AI

Respuesta de la IA

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

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

Пример:

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

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