Avatar ·

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:\n\n```go\nresp, err := http.Get("https://api.example.com/data")\nif err != nil {\n log.Fatal(err)\n}\n// Ich schließe resp.Body nicht\ndata, _ := io.ReadAll(resp.Body)\nfmt.Println(string(data))\n```\n\nAlles 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()` steht. 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 gar nicht kritisch? Erklärt mir bitte einfach, was unter der Haube passiert. Danke im Voraus!