Middle
146
questionbank
В каком порядке выполняются отложенные функции (defer) в Go?
Ответ от нейросети
sobes.tech AI
Отложенные функции выполняются в порядке, обратном их определению, то есть LIFO (Last-In, First-Out).
package main
import "fmt"
func main() {
defer fmt.Println("первый") // Определена последней
defer fmt.Println("второй") // Определена предпоследней
defer fmt.Println("третий") // Определена первой
}
В результате выполнения этого кода будет выведено:
третий
второй
первый
При выходе из скоупа (функции), где была объявлена defer, отложенные функции последовательно вызываются в обратном порядке. Это полезно для освобождения ресурсов, закрытия файлов, разблокировки мьютексов и других операций очистки.