Junior — Middle
Wat voor gedrag vertoont een anonieme functie die binnen een lus wordt gedeclareerd met behulp van defer, aan het einde van elke iteratieve stap?
sobes.tech AI
Antwoord van AI
Если внутри цикла объявлена анонимная функция с использованием defer, то вызовы этих отложенных функций не выполняются сразу, а накапливаются и будут вызваны только после выхода из функции, в которой находится цикл.
Это значит, что все отложенные вызовы внутри цикла будут выполнены в обратном порядке после завершения всей функции, а не после каждой итерации.
Пример:
for i := 0; i < 3; i++ {
defer fmt.Println(i)
}
// При выходе из функции будет выведено:
// 2
// 1
// 0
Если нужно, чтобы отложенная функция выполнялась в конце каждой итерации, defer внутри цикла использовать не стоит.