"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > आप एकाधिक मानदंडों के आधार पर गो में नेस्टेड स्लाइस वाले स्ट्रक्चर्स के एक स्लाइस को कैसे क्रमबद्ध करते हैं?

आप एकाधिक मानदंडों के आधार पर गो में नेस्टेड स्लाइस वाले स्ट्रक्चर्स के एक स्लाइस को कैसे क्रमबद्ध करते हैं?

2024-11-08 को प्रकाशित
ब्राउज़ करें:287

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

नेस्टेड स्लाइस के साथ स्ट्रक्चर्स के एक स्लाइस को सॉर्ट करना

गो में, आप बिल्ट-इन सॉर्ट पैकेज का उपयोग करके कस्टम स्ट्रक्चर्स के स्लाइस को सॉर्ट कर सकते हैं। निम्नलिखित कोड पर विचार करें जो दो संरचनाओं, माता-पिता और बच्चे को परिभाषित करता है, जो माता-पिता-बच्चे के रिश्ते का प्रतिनिधित्व करता है:

type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}

मान लें कि आपके पास मूल संरचनाओं का एक टुकड़ा है और आप उन्हें दो मानदंडों के आधार पर क्रमबद्ध करना चाहते हैं:

सॉर्टिंग मानदंड:

  1. सॉर्ट करें पेरेंट.आईडी द्वारा पेरेंट स्लाइस को आरोही क्रम में।
  2. प्रत्येक पेरेंट के लिए, बच्चों के स्लाइस को Child.id के अनुसार क्रमबद्ध करें। मूल के भीतर आरोही क्रम। / पेरेंट स्लाइस में प्रत्येक पेरेंट को आईडी के आधार पर क्रमबद्ध करें
  3. सॉर्ट करें। स्लाइस (पैरेंट्स, फंक (आई, जे इंट) बूल {

वापसी माता-पिता[i].id // प्रत्येक माता-पिता के लिए, बच्चों के स्लाइस में प्रत्येक बच्चे को आईडी के आधार पर क्रमबद्ध करें

के लिए _, माता-पिता:= रेंज माता-पिता {

sort.Slice(parent.children, func(i) , जे इंट) बूल { returnparent.children[i].id
}
``
return parents[i].id 


यह Parent.id के आधार पर पैरेंट स्लाइस को सॉर्ट करता है।

sort.Slice(parent.children, func(i, j int) bool { 
    return parent.children[i].id 


परिणाम अपेक्षित आउटपुट के साथ संरेखित होता है:

[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3