Junior — Middle
Можете ли да обясните последователността на изпълнение на отложените функции, регистрирани в Go?
sobes.tech AI
Отговор от AI
В Go отложените функции (defer) се изпълняват в обратен ред на регистрацията им, тоест по принципа на стек (LIFO).
Когато функция приключи, всички отложени извиквания се изпълняват в обратен ред: последният регистриран defer се изпълнява първи.
Пример:
func пример() {
defer fmt.Println("Първи defer")
defer fmt.Println("Втори defer")
defer fmt.Println("Трети defer")
fmt.Println("В тялото на функцията")
}
Изходът ще бъде:
В тялото на функцията
Трети defer
Втори defer
Първи defer
Това е полезно, например, за освобождаване на ресурси в обратен ред на тяхното придобиване.