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\nEs funktioniert alles, 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. Vielen Dank im Voraus!
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen