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

أسلوب المجموعات في Go

جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 31 من 68.

لا تمتلك لغة Go هيكل بيانات مجموعة (set) مدمج كما هو الحال في العديد من لغات البرمجة الأخرى. ومع ذلك، فقد ابتكر مطورو Go حلاً أنيقاً باستخدام الخرائط (maps) لمحاكاة المجموعات، وقد أصبح هذا النمط شائعاً جداً لدرجة أنه يُعتبر من الأساليب الاصطلاحية (idiomatic) في لغة Go.

يستخدم أسلوب الـ set في لغة Go خريطة (map) حيث تهتم فقط بالمفاتيح (keys) وليس القيم (values). وبما أنك تحتاج إلى تخزين شيء ما كقيمة، يستخدم مبرمجو Go بنية فارغة (empty struct) struct{}. إليك النمط الأساسي:

var mySet map[string]struct{}

يُعد الهيكل الفارغ struct{} مميزًا لأنه لا يشغل أي مساحة (صفر بايت) من الذاكرة. وهذا يجعله مثاليًا للمجموعات (sets) حيث تحتاج فقط إلى تتبع ما إذا كان العنصر موجودًا أم لا، دون إهدار الذاكرة في تخزين قيم لا معنى لها.

يعتمد هذا النهج على الخاصية الأساسية لمفاتيح الخريطة (map keys): يجب أن تكون فريدة. عندما تضيف عنصراً إلى مجموعتك (set)، فأنت في الواقع تضيف مفتاحاً إلى الخريطة. يتم فرض التفرد تلقائياً من خلال سلوك الخريطة، مما يمنحك دلالات المجموعة (set semantics) الحقيقية.

في الدروس القادمة، ستتعلم كيفية إنشاء المجموعات (sets) ومعالجتها والعمل معها باستخدام نمط Go الاصطلاحي هذا. تُستخدم هذه التقنية على نطاق واسع في قواعد أكواد Go لتتبع العناصر الفريدة، وتنفيذ الخوارزميات، وحل المشكلات التي تتطلب اختبار عضوية سريعاً.

quiz iconاختبر نفسك

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

quiz iconاختبر نفسك

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

quiz iconاختبر نفسك

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

ورقة مرجعية

لا تمتلك لغة Go هيكل بيانات set (مجموعة) مدمج، ولكنها تستخدم الخرائط (maps) لمحاكاة المجموعات باستخدام النمط الاصطلاحي:

var mySet map[string]struct{}

يتم استخدام الهيكل الفارغ struct{} كنوع للقيمة لأنه لا يستهلك أي بايتات من الذاكرة. يجب أن تكون مفاتيح الخريطة (Map keys) فريدة، مما يوفر تلقائياً دلالات المجموعة (set semantics) لتتبع العناصر الفريدة.

جرّب بنفسك

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

quiz iconاختبر نفسك

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

جميع دروس Logic & Flow