Sobes.tech
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

Това е полезно, например, за освобождаване на ресурси в обратен ред на тяхното придобиване.