تعيين المؤشر في وظائف Go: لماذا تختلف النتائج؟
عند تمرير مؤشر إلى وظيفة في Go، من المهم أن نفهم كيف يتم يتم استخدام المؤشر وتأثيراته على القيمة الأصلية. تدور هذه المناقشة حول مقتطف التعليمات البرمجية الذي يقوم بتمرير مؤشر إلى اختبار البنية، بهدف تعديل حقل القيمة الخاص به.
مقتطف التعليمات البرمجية الأول، على الرغم من محاولة تغيير حقل القيمة عن طريق تعيين بنية اختبار جديدة للمؤشر (*p = Test{4})، يفشل في تغيير القيمة الفعلية. وذلك لأنه يقوم فقط بإعادة تعيين متغير المؤشر p، وليس القيمة المشار إليها. المتغير p داخل الدالة f() موجود بشكل مستقل وليس له أي تأثير على القيمة التي يشير إليها المتغير p في main().
في المقابل، مقتطف الكود الثاني، حيث p.Value تم تعيينه بشكل صريح على 4، مما أدى إلى تعديل حقل القيمة بنجاح. وذلك لأن عامل التشغيل يقوم بإلغاء الإشارة إلى المؤشر، مما يسمح بالوصول إلى القيمة الفعلية المشار إليها وتعديلها.
كملاحظة إضافية، من الممكن تعديل العنوان المخزن في متغير مؤشر الوظيفة main() عن طريق التمرير عنوانه (*) إلى الدالة f(). ومع ذلك، فإن هذا الأسلوب أقل كفاءة وملاءمة مقارنة بالتعديل المباشر للقيمة المشار إليها باستخدام p.Value.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3