مقارنة الـ Maps
جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 29 من 68.
على عكس العديد من أنواع البيانات الأخرى في Go، تمتلك الخرائط (maps) قيداً فريداً: لا يمكن مقارنتها مباشرة باستخدام المعامل ==. الاستثناء الوحيد لهذه القاعدة هو عند مقارنة خريطة بـ nil.
هذا يعني أن الكود التالي لن يتم تجميعه:
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
// سيؤدي هذا إلى خطأ في التجميع!
if map1 == map2 {
fmt.Println("Maps are equal")
}ومع ذلك، يمكنك مقارنة الـ map بـ nil بأمان:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}عندما تحتاج إلى التحقق مما إذا كانت خريطتان (maps) تحتويان على نفس أزواج المفتاح والقيمة (key-value pairs)، يجب عليك كتابة دالة مخصصة (custom function) تمر عبر كلتا الخريطتين وتقارن كل عنصر على حدة. يمنحك هذا النهج تحكماً كاملاً في منطق المقارنة، مما يسمح لك بتحديد معنى "متساوي" (equal) بالضبط لحالة الاستخدام الخاصة بك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
ورقة مرجعية
لا يمكن مقارنة الخرائط (Maps) مباشرة باستخدام عامل التشغيل ==، إلا عند المقارنة بـ nil:
// لن يتم تجميع هذا الكود (Compile)
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
if map1 == map2 { // Compile error!
fmt.Println("Maps are equal")
}يمكنك مقارنة الخريطة بـ nil:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}للتحقق مما إذا كانت خريطتان متساويتين، يجب عليك كتابة دالة مخصصة تتكرر عبر كلتا الخريطتين وتقارن كل عنصر على حدة.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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)ملخص - الأشكال والسلوكيات