¿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