Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مقارنة الـ 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) بالضبط لحالة الاستخدام الخاصة بك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

ورقة مرجعية

لا يمكن مقارنة الخرائط (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")
}

للتحقق مما إذا كانت خريطتان متساويتين، يجب عليك كتابة دالة مخصصة تتكرر عبر كلتا الخريطتين وتقارن كل عنصر على حدة.

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow