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

हम गो 1.18 जेनरिक में इंडेक्सेबल प्रकारों को प्रभावी ढंग से कैसे नियंत्रित कर सकते हैं?

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

How Can We Effectively Constrain Indexable Types in Go 1.18 Generics?

गो 1.18 जेनरिक में अनुक्रमण बाधाएं

गो 1.18 में जेनेरिक की शुरूआत के साथ, डेवलपर्स के पास एल्गोरिदम को लागू करने का अवसर है जो विशिष्ट के साथ काम करते हैं प्रकार. एक सामान्य आवश्यकता उन प्रकारों का उपयोग करना है जो अनुक्रमण का समर्थन करते हैं, जैसे कि सरणियाँ, स्लाइस, मानचित्र और स्ट्रिंग। , यूनियन के साथ निम्नलिखित बाधा का उपयोग करने पर विचार करें:

टाइप इंडेक्सेबल इंटरफ़ेस { ~[]बाइट | ~स्ट्रिंग ) :

मानचित्र:
type Indexable interface {
    ~[]byte | ~string
}

सरणी: एक सरणी की लंबाई उसके प्रकार का हिस्सा है, इसलिए एक संघ को निर्दिष्ट करने की आवश्यकता होगी सभी संभव लंबाई. यह बोझिल हो सकता है और सीमा से बाहर त्रुटियों की संभावना हो सकती है।

वैकल्पिक दृष्टिकोण
  • इन सीमाओं के कारण, अनुक्रमण का समर्थन करने वाला एकमात्र व्यावहारिक संघ है []बाइट | डोरी। यह संघ अनुक्रमण संचालन की अनुमति देता है लेकिन रेंज संचालन का समर्थन नहीं करता है क्योंकि इसमें मुख्य प्रकार का अभाव है।
  • func GetAt[T Indexable](v T, i int) बाइट { वापसी v[i] }यह फ़ंक्शन एक इंडेक्सेबल मान और एक इंडेक्स लेता है और निर्दिष्ट इंडेक्स पर बाइट लौटाता है।

निष्कर्ष

जबकि गो 1.18 एक रास्ता प्रदान करता है एक संघ का उपयोग करके प्रकारों को अनुक्रमणीय प्रकारों तक सीमित करना, उस बाधा की सीमाओं का मतलब है कि यह केवल उपयोग के मामलों के सीमित सेट के लिए व्यावहारिक है, अर्थात् अनुक्रमण बाइट्स और तार.

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

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

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

Copyright© 2022 湘ICP备2022001581号-3