اختيار الـ Receivers
جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 9 من 68.
الآن بعد أن فهمت كلاً من مستقبِلات القيمة (value receivers) ومستقبِلات المؤشر (pointer receivers)، فإن السؤال الجوهري هو: متى يجب عليك استخدام كل منهما؟ يعتمد القرار على ما تحتاج الـ method القيام به مع الـ receiver.
استخدم مستقبل المؤشر (pointer receiver) عندما تحتاج الطريقة (method) الخاصة بك إلى تعديل الهيكل (struct) الأصلي. نظرًا لأن مستقبلات المؤشر تعمل مع المثيل الفعلي للهيكل، فإن أي تغييرات يتم إجراؤها داخل الطريقة ستظل قائمة بعد انتهاء تنفيذ الطريقة. هذا أمر ضروري للطرق التي تقوم بتحديث الحقول، أو تغيير الحالة، أو إجراء العمليات التي يجب أن تؤثر على البيانات الأصلية.
استخدم مستقبل القيمة (value receiver) عندما تحتاج الطريقة (method) الخاصة بك فقط إلى قراءة البيانات من الهيكل (struct) دون تغييره. تعمل مستقبلات القيمة مع نسخة، لذا فهي مثالية للطرق التي تحسب القيم، أو تنسق المخرجات، أو تؤدي أي عملية لا تتطلب تعديل الهيكل الأصلي. كما أنها توفر الأمان من خلال ضمان بقاء البيانات الأصلية دون تغيير.
كقاعدة عامة: إذا كانت الـ method الخاصة بك تغير الـ struct، فاستخدم pointer receiver. وإذا كانت الـ method تقرأ فقط من الـ struct، فاستخدم value receiver. هذا النهج يجعل نوايا الكود الخاص بك واضحة ويساعد في منع التعديلات غير المقصودة على بياناتك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
ورقة مرجعية
استخدم pointer receiver (مستقبل مؤشر) عندما تحتاج الدالة (method) الخاصة بك إلى تعديل الهيكل (struct) الأصلي:
- التغييرات التي يتم إجراؤها داخل الدالة ستستمر بعد انتهاء تنفيذ الدالة
- ضروري للدوال التي تقوم بتحديث الحقول أو تغيير الحالة
استخدم value receiver (مستقبل قيمة) عندما تحتاج الدالة الخاصة بك فقط إلى قراءة البيانات من الهيكل (struct):
- تعمل مع نسخة، لذا تظل البيانات الأصلية دون تغيير
- مثالية للدوال التي تحسب القيم أو تنسق المخرجات
- توفر الأمان من خلال ضمان عدم حدوث تعديلات غير مقصودة
قاعدة عامة: إذا كانت الدالة الخاصة بك تغير الهيكل (struct)، فاستخدم pointer receiver. أما إذا كانت الدالة تقرأ فقط من الهيكل، فاستخدم value receiver.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1تدفق التحكم المتقدم
جملة Switch مع `fallthrough`الخروج من الحلقات المتداخلةالاستمرار في حلقة محددةجملة `goto`ملخص - التحكم المتقدم في الحلقات2الـ Structs والميثودز (Methods)
تعريف الـ Methods على الـ Structsالـ Value Receiversالـ Pointer Receiversاختيار الـ Receiversالـ Methods مقابل الـ Functionsملخص - سلوك الـ Struct5تعمق في الـ Maps
Maps من نوع Structsالـ Pointers كقيم في الـ Mapsالتحقق من الـ Nil Mapsمقارنة الـ Mapsمراجعة - عداد تكرار الكلمات3الواجهات (الأساسيات)
ما هي الواجهة؟تعريف الواجهةتطبيق الواجهةاستخدام أنواع الواجهاتالواجهة الفارغةتأكيدات النوع (Type Assertions)تبديل النوع (Type Switch)ملخص - الأشكال والسلوكيات