Avatar ·

¿Qué pasa si no cierras response.Body en Go? Fuga de memoria y otros problemas

¡Hola a todos! Acabo de empezar a aprender Go y estoy escribiendo un cliente HTTP simple para obtener datos de una API. Tengo este código: ```go resp, err := http.Get("https://api.example.com/data") if err != nil { log.Fatal(err) } // No cierro resp.Body data, _ := io.ReadAll(resp.Body) fmt.Println(string(data)) ``` Todo funciona, los datos llegan. Pero noté que en muchos ejemplos en Stack Overflow y en la documentación de Go escriben `defer resp.Body.Close()`. Honestamente, no entiendo por qué es necesario si el programa termina inmediatamente después de leer los datos. ¿Qué cosas malas pueden pasar si olvido cerrar `response.Body`? ¿Fuga de memoria? ¿Ralentización del programa? ¿O no es crítico para scripts pequeños? Explíquenme, por favor, en términos simples qué sucede bajo el capó. ¡Gracias de antemano! <<>>

Por qué cerrar response.Body es críticamente importante

Tienes razón en que en scripts cortos esto puede no manifestarse, pero en aplicaciones reales (servidores web, demonios de larga duración) ignorar