Senior
Երբ է.defer գործառույթը կանչվելու: Լոկալ բլոկից դուրս գալու ժամանակ, ֆունկցիայից դուրս գալու ժամանակ կամ ծրագրի ավարտին?
sobes.tech AI
Պատասխան AI-ից
В Go отложенная функция, объявленная с помощью defer, вызывается при выходе из той функции, в которой она была объявлена. Это происходит независимо от того, как происходит выход — обычное завершение, возврат с ошибкой или паника.
Важно: defer не срабатывает при выходе из локального блока (например, из цикла или условного оператора), а только при выходе из функции целиком. Также defer не дожидается завершения всего приложения, а срабатывает сразу при завершении функции.
Пример:
func example() {
defer fmt.Println("deferred call")
fmt.Println("function body")
}
// При вызове example() сначала выведется "function body", затем "deferred call" при выходе из example.