Sobes.tech
Senior

Czym jest defer w Go? Co wyświetli kod z dwoma defer?

sobes.tech AI

Odpowiedź od AI

W języku 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.

Jeśli w funkcji znajduje się kilka defer, są one wykonywane w kolejności odwrotnej do ich deklaracji (stos wywołań).

Przykład:

package main

import "fmt"

func main() {
    defer fmt.Println("Pierwszy defer")
    defer fmt.Println("Drugi defer")
    fmt.Println("Główny kod")
}

Wynik będzie wyglądał tak:

Główny kod
Drugi defer
Pierwszy defer

Oznacza to, że najpierw wykonywany jest główny kod, a następnie odłożone wywołania w kolejności odwrotnej.