الـ Methods مقابل الـ Functions
جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 10 من 68.
بينما تقوم كل من الطرق (methods) والوظائف (functions) بإجراء عمليات في Go، إلا أنها تخدم أغراضاً مختلفة ولها أنماط تعريف متميزة. إن فهم هذا الاختلاف أمر بالغ الأهمية لكتابة كود واضح ومنظم.
تُعد الدالة (function) مستقلة وقائمة بذاتها. فهي لا تنتمي إلى أي نوع محدد:
func calculateArea(width, height float64) float64 {
return width * height
}يتم ربط الـ method بنوع معين من خلال مستقبل (receiver). وهي تتبع ذلك النوع ويمكنها الوصول إلى بياناته:
func (r Rectangle) area() float64 {
return r.Width * r.Height
}يكمن الفرق الرئيسي في كيفية استدعائهما. يتم استدعاء الدوال (Functions) مباشرة بالاسم، بينما يتم استدعاء الميثودات (Methods) على مثيلات من نوعها المرتبط باستخدام تدوين النقطة (dot notation). هذا الارتباط يجعل الميثودات مثالية لتعريف السلوكيات التي تنتمي بشكل طبيعي إلى أنواعك المخصصة، بينما تعمل الدوال بشكل جيد للعمليات العامة التي لا تحتاج إلى الارتباط بهياكل بيانات محددة.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
ورقة مرجعية
الـ دالة (function) مستقلة وقائمة بذاتها:
func calculateArea(width, height float64) float64 {
return width * height
}الـ ميثود (method) مرتبطة بنوع معين من خلال مستقبل (receiver):
func (r Rectangle) area() float64 {
return r.Width * r.Height
}تُستدعى الدوال مباشرة بالاسم، بينما تُستدعى الميثودات على الكائنات (instances) باستخدام تدوين النقطة (dot notation).
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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)ملخص - الأشكال والسلوكيات