تُعدّ خرائط Go بنية بيانات أساسية لتخزين أزواج المفتاح-القيمة. إن تحديد وجود مفتاح بكفاءة داخل الخريطة أمر بالغ الأهمية لكتابة شفرة Go قوية وعالية الأداء. تستعرض هذه المقالة أفضل الممارسات للتحقق من وجود المفتاح في خرائط Go، مع تسليط الضوء على أكثر الأساليب كفاءة وامتثالًا للأسلوب.
جدول المحتويات
فهم خرائط Go
خريطة Go عبارة عن مجموعة غير مرتبة من أزواج المفتاح-القيمة. يجب أن تكون المفاتيح قابلة للمقارنة (تدعم مقارنات المساواة)، وكل مفتاح يحدد بشكل فريد قيمته المرتبطة. يمكن أن تكون القيم من أي نوع. داخليًا، تستخدم خرائط Go جداول التجزئة، مما ينتج عنه، في المتوسط، عمليات بحث عن مفاتيح زمنية ثابتة (O(1))، بغض النظر عن حجم الخريطة. هذا يجعلها فعالة للغاية لاسترجاع البيانات.
فيما يلي مثال على إعلان الخريطة والمبادرة:
package main
import "fmt"
func main() {
myMap := map[string]int{
"apple": 1,
"banana": 2,
"cherry": 3,
}
fmt.Println(myMap)
}
أسلوب الفاصلة ok
النهج الموصى به للتحقق من وجود مفتاح في خريطة Go هو أسلوب “الفاصلة ok”. يستفيد هذا من قيم الإرجاع المزدوجة لمشغل فهرسة الخريطة: القيمة المرتبطة بالمفتاح وقيمة منطقية تشير إلى ما إذا تم العثور على المفتاح.
package main
import "fmt"
func main() {
myMap := map[string]int{
"apple": 1,
"banana": 2,
"cherry": 3,
}
value, ok := myMap["banana"]
if ok {
fmt.Println("Banana exists, value:", value)
} else {
fmt.Println("Banana does not exist")
}
value, ok = myMap["grape"]
if ok {
fmt.Println("Grape exists, value:", value)
} else {
fmt.Println("Grape does not exist")
}
}
إذا كان المفتاح “banana” موجودًا، فسيكون ok
مساويًا لـ true
، وستحتفظ value
بالعدد الصحيح المرتبط. إذا كان “banana” غير موجود، فسيكون ok
مساويًا لـ false
، وستكون value
هي القيمة الصفرية للنوع (0 لـ int
في هذه الحالة).
تجنب الأساليب غير الفعالة
إن محاولة التحقق من وجود المفتاح باستخدام أساليب مثل الوصول المباشر إلى الخريطة دون التحقق من ok
أو استخدام دوال مثل len
على خريطة جديدة تم إنشاؤها من مجموعة فرعية من الخريطة الأصلية أمر غير مُشجّع للغاية. هذه الأساليب أقل كفاءة وقد تؤدي إلى حدوث حالات توقف مفاجئ وقت التشغيل إذا لم يتم العثور على المفتاح. يُعد أسلوب الفاصلة ok هو الأسلوب الأفضل من جميع النواحي.
أولِ دائمًا الأولوية لأسلوب الفاصلة ok للتحقق من وجود المفتاح في خرائط Go. يضمن ذلك كفاءة الشفرة وأمانها وقابليتها للقراءة، مع تقليل خطر أخطاء وقت التشغيل.