ExpertiDict

Go · Essencial · Inglês · Técnico

defer

/dɪˈfɝ/palavra-chave

Palavra-chave que agenda uma chamada de função para executar quando a função atual terminar, em ordem inversa de declaração (LIFO).

Onde usar

É o jeito de garantir limpeza: 'defer f.Close()' logo depois de abrir o arquivo e 'defer mu.Unlock()' depois do Lock. Roda mesmo se houver panic.

Em código

func main() {
  defer fmt.Println("1")
  defer fmt.Println("2")
  fmt.Println("fim")
} // imprime: fim, 2, 1

Exemplos

Put a defer right after opening the file.

Coloque um defer logo depois de abrir o arquivo.

Deferred calls run in reverse order.

Chamadas adiadas rodam em ordem inversa.

Cuidado

Os argumentos são avaliados na hora do defer, não quando ele executa; e dentro de loops os defers só rodam ao fim da função.

Sinônimos

chamada adiada

Origem

Do latim deferre, 'levar adiante', e do inglês defer, 'adiar'.

Veja também

Todos os termos de Go