Avatar ·

ماذا يحدث إذا لم يتم إغلاق response.Body في Go؟ تسرب الذاكرة ومشاكل أخرى

مرحباً بالجميع! لقد بدأت للتو في تعلم Go وأقوم بكتابة عميل HTTP بسيط لجلب البيانات من API. لدي هذا الكود:\n\n```go\nresp, err := http.Get("https://api.example.com/data")\nif err != nil {\n log.Fatal(err)\n}\n// أنا لا أغلق resp.Body\ndata, _ := io.ReadAll(resp.Body)\nfmt.Println(string(data))\n```\n\nكل شيء يعمل، البيانات تصل. لكنني لاحظت أن في العديد من الأمثلة على Stack Overflow وفي توثيق Go يكتبون `defer resp.Body.Close()`. بصراحة، لا أفهم لماذا هذا ضروري إذا كان البرنامج ينتهي فوراً بعد قراءة البيانات؟ ما الذي يمكن أن يحدث بشكل سيء إذا نسيت إغلاق `response.Body`؟ تسرب الذاكرة؟ بطء البرنامج؟ أم أن هذا ليس مهماً على الإطلاق للبرامج النصية الصغيرة؟ اشرح لي، من فضلك، بطريقة مبسطة ما يحدث تحت الغطاء. شكراً مقدماً!