Senior
Quando será chamada a função diferida defer? Ao sair do bloco local, ao sair da função ou ao terminar a aplicação?
sobes.tech IA
Resposta da IA
Em Go, a função diferida, declarada com defer, é chamada ao sair da função na qual foi declarada. Isto acontece independentemente de como a saída ocorre: término normal, retorno com erro ou pânico.
Importante: defer não é acionado ao sair de um bloco local (por exemplo, de um ciclo ou uma instrução condicional), mas apenas ao sair de toda a função. Além disso, defer não espera que toda a aplicação termine, mas é executado imediatamente ao terminar a função.
Exemplo:
func exemplo() {
defer fmt.Println("chamada diferida")
fmt.Println("corpo da função")
}
// Ao chamar exemplo(), primeiro será exibido "corpo da função", depois "chamada diferida" ao sair de exemplo.