Sobes.tech
Senior

Wanneer wordt de uitgestelde functie defer aangeroepen? Bij het verlaten van het lokale blok, bij het verlaten van de functie of bij het afsluiten van de applicatie?

sobes.tech AI

Antwoord van AI

В Go отложенная функция, объявленная с помощью defer, вызывается при выходе из той функции, в которой она была объявлена. Это происходит независимо от того, как происходит выход — обычное завершение, возврат с ошибкой или паника.

Важно: defer не срабатывает при выходе из локального блока (например, из цикла или условного оператора), а только при выходе из функции целиком. Также defer не дожидается завершения всего приложения, а срабатывает сразу при завершении функции.

Пример:

func example() {
    defer fmt.Println("deferred call")
    fmt.Println("function body")
}

// При вызове example() сначала выведется "function body", затем "deferred call" при выходе из example.