Sobes.tech
Middle

Какво е defer и за какво се използва? В какъв ред се изпълняват defer-обажданията, ако има няколко в една функция?

sobes.tech AI

Отговор от AI

В Go ключовата дума defer се използва за отлагане на извикването на функция: тя ще бъде изпълнена след завършването на обкръжаващата функция, но преди нейното връщане. Това е удобно за освобождаване на ресурси, затваряне на файлове, отключване на мьютекси и други операции по почистване.

Ако в една функция има няколко извиквания на defer, те се изпълняват в обратен ред на тяхното обявяване (стеков ред). Тоест, последният обявен defer ще бъде изпълнен първи.

Пример:

func пример() {
    defer fmt.Println("Първи defer")
    defer fmt.Println("Втори defer")
    fmt.Println("В тялото на функцията")
}
// Изходът ще бъде:
// В тялото на функцията
// Втори defer
// Първи defer