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.