Was passiert, wenn man response.Body in Go nicht schließt? Speicherleck und andere Probleme
Hallo zusammen! Ich habe gerade angefangen, Go zu lernen, und schreibe einen einfachen HTTP-Client, um Daten von einer API abzurufen. Ich habe diesen Code:
```go
resp, err := http.Get("https://api.example.com/data")
if err != nil {
log.Fatal(err)
}
// Ich schließe resp.Body nicht
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
```
Alles funktioniert, die Daten kommen an. Aber mir ist aufgefallen, dass in vielen Beispielen auf Stack Overflow und in der Go-Dokumentation `defer resp.Body.Close()` geschrieben wird. Ehrlich gesagt verstehe ich nicht, warum das nötig ist, wenn das Programm direkt nach dem Lesen der Daten beendet wird? Was kann Schlimmes passieren, wenn ich vergesse, `response.Body` zu schließen? Speicherleck? Programmverlangsamung? Oder ist das für kleine Skripte überhaupt nicht kritisch? Bitte erklärt mir laienhaft, was unter der Haube passiert. Vielen Dank im Voraus!
<<>>
Warum das Schließen von response.Body entscheidend ist
Sie haben recht, dass dies in kurzen Skripten möglicherweise nicht auftritt, aber in realen Anwendungen (Webserver, langlebige Daemons) kann das Ignorieren