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

गो में एकाधिक फ़ील्ड्स द्वारा संरचनाओं का एक टुकड़ा कैसे क्रमबद्ध करें?

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

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. // माता-पिता को उनकी आईडी के आधार पर क्रमबद्ध करें सॉर्ट.स्लाइस(माता-पिता, func(i, j int) बूल {वापसी माता-पिता[i].id

    यह सॉर्टिंग एल्गोरिदम कुशलतापूर्वक दोनों मानदंडों को संभालता है, यह सुनिश्चित करता है कि पैरेंट स्लाइस को इच्छानुसार ऑर्डर किया गया है।

    अपेक्षित परिणाम:

    // 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