مقارنة الـ Maps
جزء من قسم المنطق وتدفق التنفيذ في رحلة GO على Coddy. الدرس 29 من 68.
على عكس العديد من أنواع البيانات الأخرى في Go، للخرائط قيد فريد: لا يمكن مقارنتها مباشرةً باستخدام عامل التشغيل ==. والاستثناء الوحيد لهذه القاعدة هو عند مقارنة خريطة بـ 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")
}ومع ذلك، يمكنك مقارنة خريطة بأمان مع nil:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}عندما تحتاج إلى التحقق مما إذا كانت خريطتان تحتويان على أزواج المفاتيح والقيم نفسها، عليك كتابة دالة مخصصة تكرّر عبر كلتا الخريطتين وتقارن كل عنصر على حدة. يمنحك هذا النهج تحكمًا كاملًا في منطق المقارنة، ما يتيح لك تحديد معنى «المساواة» بدقة وفقًا لحالة الاستخدام الخاصة بك.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
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)ملخص - الأشكال والسلوكياتتدرّب بنفسك: مترجم Go عبر الإنترنت