التحقق الفعال من وجود المفتاح في خرائط متعددة
في Go، من الشائع العمل مع الخرائط، وهي هياكل بيانات فعالة لاسترداد المفتاح -أزواج القيمة. ومع ذلك، يوضح الكود المقدم من المطور الحاجة إلى التحقق من وجود مفتاح في خريطتين منفصلتين. ويبقى السؤال ما إذا كان يمكن جعل هذه العملية أكثر إيجازًا.
كما هو موضح في الإجابة، فإن استخدام النموذج v, ok := m[k] الخاص في Go للتحقق من وجود المفتاح يقتصر على تعيينات ذات متغير واحد . ولذلك، فإن الجمع بين التحققين في واحد إذا كان الشرط باستخدام هذا النموذج غير ممكن.
ومع ذلك، هناك طرق بديلة لتحقيق الوظيفة المطلوبة:
تعيين Tuple:
إذا كان نوع قيمة الخريطة هو نوع واجهة ويمكنك التأكد من عدم استخدام القيمة الصفرية، فيمكنك إجراء تعيين Tuple باستخدام فهرسين التعبيرات:
if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil { // ... }
وظيفة المساعدة: يمكن إنشاء وظيفة مساعدة لإجراء التحقق من وجود المفتاح في كلتا الخريطتين وإرجاع النتائج:
func idx(m1, m2 map[string]interface{}, k string) ( v1, v2 interface{}, ok1, ok2 bool) { v1, ok1 = m1[k] v2, ok2 = m2[k] return }يمكن بعد ذلك استخدام هذه الوظيفة على النحو التالي:if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); موافق1 && موافق2 { // ...
func idx(m1, m2 map[string]interface{}, k string) ( v1, v2 interface{}, ok1, ok2 bool) { v1, ok1 = m1[k] v2, ok2 = m2[k] return }
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3