Middle
W jakiej kolejności wykonywane są odłożone funkcje (defer) w Go?
sobes.tech AI
Odpowiedź od AI
Funkcje odroczone są wykonywane w kolejności odwrotnej do ich definicji, czyli LIFO (Last-In, First-Out).
package main
import "fmt"
func main() {
defer fmt.Println("pierwszy") // Zdefiniowany jako ostatni
defer fmt.Println("drugi") // Zdefiniowany jako przedostatni
defer fmt.Println("trzeci") // Zdefiniowany jako pierwszy
}
W wyniku wykonania tego kodu zostanie wyświetlone:
trzeci
drugi
pierwszy
Po wyjściu z zakresu (funkcji), w którym zadeklarowano defer, odroczone funkcje są wywoływane w kolejności odwrotnej. Jest to przydatne do zwalniania zasobów, zamykania plików, odblokowywania mutexów i innych operacji sprzątających.