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