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

كيف يمكنك فرز شريحة من الهياكل ذات الشرائح المتداخلة في Go بناءً على معايير متعددة؟

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

How do you sort a slice of structs with nested slices in Go based on multiple criteria?

فرز شريحة من الهياكل باستخدام الشرائح المتداخلة

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

type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}

افترض أن لديك شريحة من الهياكل الرئيسية وتريد فرزها بناءً على معيارين:

معايير الفرز:

  1. الفرز شريحة الأصل حسب Parent.id بترتيب تصاعدي.
  2. لكل والد، قم بفرز شريحة الأطفال حسب Child.id بترتيب تصاعدي داخل الأصل.

الحل:

يتناول مقتطف الكود المقدم متطلبات الفرز:

``

// فرز كل والد. في شريحة الوالدين بواسطة Id
sort.Slice(parents, func(i, j int) bool {

returnparents[i].id return parents[i].id // لكل والد، قم بفرز كل طفل في شريحة الأطفال حسب المعرف

for _، الأصل:= نطاق الوالدين {

sort.Slice(parent.children, func(i ، ي إنت) بول { returnparent.children[i].id return parents[i].id }

``

تعمل وظيفة الفرز.شريحة مباشرة على الشرائح، مما يؤدي إلى التخلص من الحاجة إلى حاويات وسيطة.

    يقوم بفرز الشريحة الأصلية بناءً على Parent.id.
  1. لكل أصل في الشريحة الأصلية التي تم فرزها، فإنه يفرز الشريحة الفرعية بناءً على Child.id باستخدام حلقة متداخلة.
تتوافق النتيجة مع الإخراج المتوقع:

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

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

Copyright© 2022 湘ICP备2022001581号-3