Senior
¿Cuándo se llamará a la función diferida defer? ¿Al salir del bloque local, al salir de la función o al finalizar la aplicación?
sobes.tech AI
Respuesta de la IA
En Go, la función diferida, declarada con defer, se llama al salir de la función en la que fue declarada. Esto sucede independientemente de cómo se produzca la salida: finalización normal, retorno con error o pánico.
Importante: defer no se activa al salir de un bloque local (por ejemplo, de un ciclo o una declaración condicional), sino solo al salir de toda la función. Además, defer no espera a que termine toda la aplicación, sino que se ejecuta inmediatamente al finalizar la función.
Ejemplo:
func ejemplo() {
defer fmt.Println("llamada diferida")
fmt.Println("cuerpo de la función")
}
// Al llamar a ejemplo() primero se mostrará "cuerpo de la función", y luego "llamada diferida" al salir de ejemplo.