Sobes.tech
Middle

¿En qué orden se ejecutan las funciones diferidas (defer) en Go?

sobes.tech AI

Respuesta de la IA

Las funciones diferidas se ejecutan en orden inverso a su definición, es decir, LIFO (Last-In, First-Out).

package main

import "fmt"

func main() {
	defer fmt.Println("primero") // Definido último
	defer fmt.Println("segundo") // Definido penúltimo
	defer fmt.Println("tercero") // Definido primero
}

Como resultado, al ejecutar este código se mostrará:

tercero
segundo
primero

Al salir del ámbito (función) donde se declaró defer, las funciones diferidas se llaman en orden inverso. Esto es útil para liberar recursos, cerrar archivos, desbloquear mutexes y otras operaciones de limpieza.