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