Sobes.tech
Middle

O que é defer em Go e em que momento ele é chamado?

sobes.tech IA

Resposta da IA

No 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 de sua saída.

Isso é útil para liberar recursos, fechar arquivos, desbloquear mutexes e outras operações de limpeza, garantindo que ocorram mesmo em caso de erros ou pânicos.

Exemplo:

func readFile() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close() // o arquivo será fechado no final da função

    // trabalho com o arquivo
}

Aqui, file.Close() será chamado automaticamente ao sair de readFile, independentemente de como a função termina.