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

كيف يمكنك تعديل القيمة التي تم إلغاء الإشارة إليها بواسطة المؤشر في Go؟

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

How Do You Modify the Value Dereferenced by a Pointer in Go?

تعديل القيمة التي تم إلغاء الإشارة إليها بواسطة مؤشر في Go

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

إلغاء الإشارة إلى المؤشرات

لتعديل القيمة التي يشير إليها المؤشر، من الضروري إلغاء الإشارة إلى المؤشر. في Go، يتم استخدام عامل النجمة (*) لهذا الغرض. من خلال إلغاء الإشارة إلى المؤشر، يمكنك الوصول إلى القيمة الأساسية التي يشير إليها.

تغيير قيم المؤشر مقابل القيم المدببة

الفرق الرئيسي هو بين تغيير قيمة المؤشر وتغيير القيمة التي يحددها. يشير إلى. يؤدي تعيين قيمة جديدة لمتغير المؤشر إلى تغيير العنوان الذي يخزنه فقط. على سبيل المثال، لا يقوم مقتطف الشفرة أدناه بتعديل القيمة المشار إليها:

func f(p *Test) {
   p = &Test{4}
}

تعديل القيم المشار إليها

لتعديل القيمة المشار إليها، من الضروري استخدام عامل إلغاء المرجعية. يمكن القيام بذلك بشكل صريح أو ضمني.

إلغاء المرجع الصريح:

func f(p *Test) {
   *p = Test{4}
}

إلغاء الإسناد الضمني:

func f(p *Test) {
   p.Value = 4
}
في كلتا الحالتين، يتم تغيير القيمة التي يشير إليها p.

تعديل المؤشر إلى المؤشر

تمرير المؤشر إلى المؤشر (*اختبار) يسمح بتعديل قيمة المؤشر المخزنة في الوظيفة الرئيسية. ومع ذلك، فإنه لن يغير القيمة التي يشير إليها المؤشر الأصلي.

func f(p **Test) {
   *p = &Test{4}
}
باختصار، عند تمرير المؤشرات إلى الوظائف، من المهم فهم الفرق بين تعديل قيمة المؤشر وتعديل القيمة التي يشير إليها. تعد مؤشرات إلغاء الإشارة ضرورية لتنفيذ العملية الأخيرة، مما يتيح إجراء تعديلات على قيم البيانات الأساسية.

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

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

Copyright© 2022 湘ICP备2022001581号-3