"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا لا يمتلك Golang بنية بيانات أصلية؟

لماذا لا يمتلك Golang بنية بيانات أصلية؟

تم النشر بتاريخ 2024-11-15
تصفح:114

Why Doesn't Golang Have a Native Set Data Structure?

افتقار جولانج الغريب إلى بنية البيانات المحددة

في جولانج، أدت الحاجة الأساسية إلى بنية بيانات محددة إلى السؤال المحير: لماذا لا يتم توفير واحد أصلا؟ مستوحاة من مكتبة Google Guava المؤثرة، لماذا أغفل مصممو Golang دعم مثل هذا الهيكل الأساسي، مما أجبر المطورين على صياغة تطبيقاتهم الخاصة؟

تكمن الإجابة في بساطة إنشاء المجموعات باستخدام الخرائط. كما هو موضح في مقتطف التعليمات البرمجية المقدم، يمكن الاستفادة من الخرائط لإنشاء مجموعات. يمكن تنفيذ العمليات الرئيسية مثل التحقق من وجود وإضافة وإزالة وتنفيذ عمليات المجموعة (الاتحاد والتقاطع) بسهولة.

s := map[int]bool{5: true, 2: true}
_, ok := s[6] // check for existence
s[8] = true // add element 
delete(s, 2) // remove element

// Union
s_union := map[int]bool{}
for k, _ := range s1{
    s_union[k] = true
}
for k, _ := range s2{
    s_union[k] = true
}

// Intersection
s_intersection := map[int]bool{}
if len(s1) > len(s2) {
  s1, s2 = s2, s1 // better to iterate over a shorter set
}
for k,_ := range s1 { 
  if s2[k] {
    s_intersection[k] = true
  }
}

على الرغم من أن هذه التطبيقات القائمة على الخريطة كافية لمعظم السيناريوهات العملية، فقد يجادل البعض بأن تنفيذ المجموعة الأصلية من شأنه تبسيط وتعزيز إمكانية قراءة التعليمات البرمجية. ومع ذلك، بالنسبة لمطوري Golang، فإن فهم استخدام الخرائط كمجموعات أمر بالغ الأهمية لحل المشكلات والاستخدام الفعال للموارد.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3