"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا لا يؤثر تعيين المؤشر في وظائف Go أحيانًا على القيمة الأصلية؟

لماذا لا يؤثر تعيين المؤشر في وظائف Go أحيانًا على القيمة الأصلية؟

تم النشر بتاريخ 2024-11-13
تصفح:848

Why Does Pointer Assignment in Go Functions Sometimes Not Affect the Original Value?

تعيين المؤشر في وظائف Go: لماذا تختلف النتائج؟

عند تمرير مؤشر إلى وظيفة في Go، من المهم أن نفهم كيف يتم يتم استخدام المؤشر وتأثيراته على القيمة الأصلية. تدور هذه المناقشة حول مقتطف التعليمات البرمجية الذي يقوم بتمرير مؤشر إلى اختبار البنية، بهدف تعديل حقل القيمة الخاص به.

مقتطف التعليمات البرمجية الأول، على الرغم من محاولة تغيير حقل القيمة عن طريق تعيين بنية اختبار جديدة للمؤشر (*p = Test{4})، يفشل في تغيير القيمة الفعلية. وذلك لأنه يقوم فقط بإعادة تعيين متغير المؤشر p، وليس القيمة المشار إليها. المتغير p داخل الدالة f() موجود بشكل مستقل وليس له أي تأثير على القيمة التي يشير إليها المتغير p في main().

في المقابل، مقتطف الكود الثاني، حيث p.Value تم تعيينه بشكل صريح على 4، مما أدى إلى تعديل حقل القيمة بنجاح. وذلك لأن عامل التشغيل يقوم بإلغاء الإشارة إلى المؤشر، مما يسمح بالوصول إلى القيمة الفعلية المشار إليها وتعديلها.

كملاحظة إضافية، من الممكن تعديل العنوان المخزن في متغير مؤشر الوظيفة main() عن طريق التمرير عنوانه (*) إلى الدالة f(). ومع ذلك، فإن هذا الأسلوب أقل كفاءة وملاءمة مقارنة بالتعديل المباشر للقيمة المشار إليها باستخدام p.Value.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3