Sobes.tech
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, отложените функции се извикват в обратен ред. Това е полезно за освобождаване на ресурси, затваряне на файлове, отключване на мютекси и други операции по почистване.