الأنواع المعممة
Generics
مفهوم
~22 دقيقة
الأنواع المعممة — Generics
قبل Go 1.18، إذا أردت دالة تعمل مع أنواع مختلفة كنت تحتاج إما interface{} (تفقد أمان الأنواع) أو كتابة نفس الدالة لكل نوع. الأنواع المعممة (Generics) تحل هذه المشكلة بأناقة.
المشكلة بدون Generics
main.go
Output:
الحل مع Generics
main.go
Output:
القيود — Constraints
القيود تُحدد ما يمكن أن يكون عليه النوع المعمم:
main.go
Output:
قيود مخصصة — Custom Constraints
main.go
Output:
أنواع معممة — Generic Types
ليس فقط الدوال — يمكنك إنشاء أنواع معممة:
main.go
Output:
Map, Filter, Reduce
main.go
Output:
متى تستخدم Generics؟
| استخدم | لا تستخدم |
|---|---|
| هياكل بيانات (Stack, Queue, Set) | منطق أعمال محدد بنوع واحد |
| دوال مساعدة (Map, Filter, Sort) | عندما interface كافية |
| تقليل تكرار الكود الفعلي | لمجرد الاستعراض |
تحدي — Challenge
اكتب دوال معممة Min و Max و Sum واستخدمها مع شريحة أعداد