الاختلافات بين عامل التشغيل new () وعامل التشغيل "&"
في Go، الوظيفة الجديدة () وعنوان الذاكرة "&" يتم استخدام كلا المشغلين لتخصيص الذاكرة. ومع ذلك، هناك بعض الاختلافات الدقيقة بين استخدامها.
مقارنة الوظائف
يقوم كل من المشغلين new() و&& بإرجاع مؤشر إلى عنوان الذاكرة المخصص حديثًا. ومع ذلك، فهي تختلف في تركيبها:
كما هو موضح في مثال التعليمات البرمجية المقدم، الانعكاس يُظهر التحليل أن كلا من &Vector{} وnew(Vector) يُرجعان مؤشرات من نفس النوع، حيث أن كلاهما مؤشرات لمثيلات بنية Vector.
ارتباك تاريخيلقد ناقشت قائمة Go البريدية سابقًا المخاوف بشأن وجود كل من new() و& لتخصيص الذاكرة، حيث يمكن أن يؤدي ذلك إلى حدوث ارتباك.
حالة خاصةمن الجدير بالذكر أن new() هي الطريقة الوحيدة للحصول على مؤشر إلى نوع أساسي غير مسمى، مثل عدد صحيح. يمكن ملاحظة ذلك في المثال التالي:
p := new(int) // صالح p := &int{0} // غير صالح
p := new(int) // valid p := &int{0} // invalidالتفضيل والاستخدام
في النهاية، يعد الاختيار بين استخدام new() و& لتخصيص الذاكرة إلى حد كبير مسألة التفضيل الشخصي. كلتا الطريقتين لهما نفس الوظيفة وتؤديان إلى نفس النتائج. ومع ذلك، من المهم أن تكون على دراية بالاختلافات الدقيقة بين المشغلين وأن تستخدمهما بشكل مناسب بناءً على متطلبات محددة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3