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