Middle
Czym jest defer i do czego służy? W jakiej kolejności wykonywane są wywołania defer, jeśli jest ich kilka w jednej funkcji?
sobes.tech AI
Odpowiedź od AI
W Go słowo kluczowe defer służy do odłożonego wywołania funkcji — zostanie ona wykonana po zakończeniu funkcji otaczającej, ale przed jej zwróceniem. Jest to wygodne do zwalniania zasobów, zamykania plików, odblokowywania mutexów i innych operacji sprzątania.
Jeśli w jednej funkcji jest kilka wywołań defer, są one wykonywane w odwrotnej kolejności ich deklaracji (kolejność stosu). Oznacza to, że ostatnio zadeklarowany defer zostanie wykonany jako pierwszy.
Przykład:
func przykład() {
defer fmt.Println("Pierwszy defer")
defer fmt.Println("Drugi defer")
fmt.Println("W ciele funkcji")
}
// Wynik będzie wyglądał tak:
// W ciele funkcji
// Drugi defer
// Pierwszy defer