Sobes.tech
Senior

O que é defer em Go? O que o código com dois defer irá mostrar?

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.

Se houver várias declarações defer numa função, elas são executadas na ordem inversa à sua declaração (pilha de chamadas).

Exemplo:

package main

import "fmt"

func main() {
    defer fmt.Println("Primeiro defer")
    defer fmt.Println("Segundo defer")
    fmt.Println("Código principal")
}

A saída será:

Código principal
Segundo defer
Primeiro defer

Ou seja, primeiro o código principal é executado, depois as chamadas diferidas na ordem inversa.