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

كيفية فرز شريحة من الهياكل حسب الحقول المتعددة في Go؟

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

How to Sort a Slice of Structs by Multiple Fields in Go?

فرز كائنات الشريحة حسب حقول متعددة

الفرز حسب معايير متعددة

خذ بعين الاعتبار بنيات الوالدين والطفل التالية:

type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}

لنفترض أن لدينا شريحة من بنيات الوالدين بقيم محددة مسبقًا:

parents := []Parent{
    {
        "3",
        []Child{
            {"2"},
            {"3"},
            {"1"},
        },
    },
    {
        "1",
        []Child{
            {"8"},
            {"9"},
            {"7"},
        },
    },
    {
        "2",
        []Child{
            {"5"},
            {"6"},
            {"4"},
        },
    },
}

متطلبات الفرز:

هدفنا هو فرز الشريحة الأصلية بناءً على معيارين:

  1. فرز الهياكل الأصلية بترتيب تصاعدي من حقل المعرف الخاص بهم.
  2. داخل كل بنية أصلية، قم بفرز شريحة الأطفال بترتيب تصاعدي لحقل المعرف.

الحل:

لتحقيق هذا الفرز، نستخدم وظيفة فرز الشرائح، التي توفر طريقة مرنة لفرز الشرائح بناءً على وظائف المقارنة المخصصة. هذا هو الكود:

// Sort parents by their ID
sort.Slice(parents, func(i, j int) bool { return parents[i].id  

تتعامل خوارزمية الفرز هذه بكفاءة مع كلا المعيارين، مما يضمن ترتيب الشريحة الأصلية حسب الرغبة.

النتيجة المتوقعة:

يجب أن تكون الشريحة التي تم فرزها تشبه البنية التالية:

[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3