What happens if you don't close response.Body in Go? Memory leak and other problems
Hi everyone! I just started learning Go and I'm writing a simple HTTP client to get data from an API. I have this code:
```go
resp, err := http.Get("https://api.example.com/data")
if err != nil {
log.Fatal(err)
}
// I don't close resp.Body
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
```
Everything works, the data arrives. But I noticed that in many examples on Stack Overflow and in Go documentation they write `defer resp.Body.Close()`. Honestly, I don't understand why this is needed if the program terminates immediately after reading the data? What bad things can happen if I forget to close `response.Body`? Memory leak? Program slowdown? Or is it not critical at all for small scripts? Please explain in simple terms what happens under the hood. Thanks in advance!