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

गो में एक स्लाइस से डुप्लिकेट पियर्स को कुशलतापूर्वक कैसे हटाएं?

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

How to Efficiently Remove Duplicate Peers from a Slice in Go?

एक स्लाइस से डुप्लिकेट आइटम हटाना

एक टेक्स्ट फ़ाइल दी गई है जिसमें "पता" और "पीयरआईडी" के साथ ऑब्जेक्ट के रूप में दर्शाए गए समकक्षों की एक सूची है। विशेषताएँ, कार्य कोड के कॉन्फ़िगरेशन में "बूटस्ट्रैप" स्लाइस से मिलान "पता" और "पीयरआईडी" के आधार पर सभी डुप्लिकेट साथियों को हटाना है।

इसे प्राप्त करने के लिए, हम स्लाइस में प्रत्येक सहकर्मी ऑब्जेक्ट के माध्यम से पुनरावृति करते हैं कई बार. प्रत्येक पुनरावृत्ति के दौरान, हम इसके "पीयरआईडी" और "पते" की तुलना उपयोगकर्ता द्वारा प्रदत्त मूल्यों से करते हैं। यदि कोई मेल मिलता है, तो हम उस विशिष्ट वस्तु को स्लाइस से हटा देते हैं। यह प्रक्रिया सुनिश्चित करती है कि सहकर्मी के सभी उदाहरण हटा दिए जाएं।

हालांकि, विचार करने के लिए एक बढ़िया मामला है। यदि "बूटस्ट्रैप" स्लाइस में अंतिम पीयर डुप्लिकेट है, तो कोड "स्लाइस बाउंड्स आउट ऑफ़ रेंज" त्रुटि से घबरा जाएगा। इस समस्या को हल करने के लिए, हम एक अधिक मजबूत समाधान लागू कर सकते हैं जो गैर-मिलान मानों को स्लाइस की शुरुआत में कॉपी करता है और पुनरावृत्ति पूरी होने पर अतिरिक्त को ट्रिम करता है।

यहां अद्यतन कोड है:

i := 0
for _, v := range cfg.Bootstrap {
   if v.PeerId == peer.PeerId && v.Address == peer.Address {
      continue
   }
   cfg.Bootstrap[i] = v
   i  
}
cfg.Bootstrap = cfg.Bootstrap[:i]

यह कोड "बूटस्ट्रैप" स्लाइस के माध्यम से पुनरावृत्त होता है। प्रत्येक पीयर ऑब्जेक्ट के लिए, यह उसके "पीयरआईडी" और "एड्रेस" की तुलना उपयोगकर्ता द्वारा प्रदत्त मूल्यों से करता है। यदि पीयर डुप्लिकेट नहीं है, तो इसे इंडेक्स "i" पर स्लाइस की शुरुआत में कॉपी किया जाता है। अगली उपलब्ध स्थिति को इंगित करने के लिए "i" सूचकांक को बढ़ाया जाता है। .

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

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

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

Copyright© 2022 湘ICP备2022001581号-3