Avatar ·

كيفية التحقق مما إذا كانت الخريطة (map) تحتوي على مفتاح معين في Go؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم Go، وواجهت مشكلة في التحقق من وجود مفتاح في map. في Python كنت معتادًا على كتابة `if key in dict:`، لكن في Go لا يوجد مثل هذا البناء. لنفترض أن لدي خريطة للمستخدمين: ```go users := map[int]string{ 1: "Alice", 2: "Bob", 3: "Charlie", } ``` أحتاج إلى التحقق مما إذا كان المستخدم ذو ID = 4 موجودًا. جربت هذا الكود: ```go if users[4] != "" { fmt.Println("User found!") } ``` لكن هذا لا يعمل إذا كانت قيمة المفتاح سلسلة فارغة. على سبيل المثال، إذا أضفت `4: ""`، فلن يفرق كودي بين عدم وجود المفتاح والقيمة الفارغة. نفس الشيء مع الخرائط الرقمية: إذا كانت القيمة 0، فإن التحقق سيفشل أيضًا. أعلم أنه في Go عند الوصول إلى مفتاح غير موجود، يتم إرجاع القيمة الصفرية للنوع. ولكن كيف يمكنني التحقق بشكل صحيح مما إذا كان المفتاح موجودًا في map، دون خطر الحصول على نتيجة إيجابية خاطئة أو سلبية خاطئة؟ خاصة أنني مهتم بالحالة التي تكون فيها القيمة الصفرية (0، ""، false) هي قيمة صالحة.