Sobes.tech
Middle

Em que ordem as funções diferidas (defer) são executadas em Go?

sobes.tech IA

Resposta da IA

As funções diferidas são executadas na ordem inversa à sua definição, ou seja, LIFO (Last-In, First-Out).

package main

import "fmt"

func main() {
	defer fmt.Println("primeiro") // Definido por último
	defer fmt.Println("segundo") // Definido penúltimo
	defer fmt.Println("terceiro") // Definido primeiro
}

Como resultado, ao executar este código, será exibido:

terceiro
segundo
primeiro

Ao sair do escopo (função) onde defer foi declarado, as funções diferidas são chamadas em ordem inversa. Isso é útil para liberar recursos, fechar arquivos, desbloquear mutexes e outras operações de limpeza.