Sobes.tech
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, отложенные функции последовательно вызываются в обратном порядке. Это полезно для освобождения ресурсов, закрытия файлов, разблокировки мьютексов и других операций очистки.