AD

¿Ya dominas lo básico? Un curso estructurado de Go es la vía rápida para dar el salto.

Ver cursos de Go en Udemy

Enlace de afiliado. No te cuesta nada extra.

🐹Lecciones de Go
Lección 50 / 68

Limpieza con defer

En esta lección te asegurarás de liberar recursos aunque haya un fallo.

defer aplaza una llamada hasta que la función termine, pase lo que pase. Se escribe justo después de obtener el recurso: f, _ := os.Open(...) seguido de defer f.Close().

El código de ejemplo muestra el orden en que se ejecutan las llamadas aplazadas.

Esta es una de las mejores ideas de Go. Poner la limpieza al lado de la apertura hace casi imposible olvidarla, mientras que en otros lenguajes queda al final de la función, lejos de donde se abrió el recurso. Y funciona aunque salte un panic.

Dos detalles que sorprenden. Las llamadas aplazadas se ejecutan en orden inverso, como una pila, lo que es justo lo correcto para liberar recursos anidados. Y los argumentos se evalúan en el momento del defer, no al ejecutarse: defer fmt.Println(i) imprime el valor que i tenía entonces.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Go directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)