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