Sobes.tech
Middle

O que é defer e para que é usado? Em que ordem as chamadas defer são executadas se houver várias na mesma função?

sobes.tech IA

Resposta da IA

Em Go, a palavra-chave defer é usada para chamar uma função de forma diferida: ela será executada após a conclusão da função envolvente, mas antes do seu retorno. Isto é útil para liberar recursos, fechar ficheiros, desbloquear mutexes e outras operações de limpeza.

Se houver várias chamadas defer numa função, elas são executadas na ordem inversa à sua declaração (ordem de pilha). Ou seja, o último defer declarado será executado primeiro.

Exemplo:

func exemplo() {
    defer fmt.Println("Primeiro defer")
    defer fmt.Println("Segundo defer")
    fmt.Println("No corpo da função")
}
// A saída será:
// No corpo da função
// Segundo defer
// Primeiro defer