जेनेरिक स्लाइस तर्क: अंतर को समझना
गो में, जेनेरिक प्रोग्रामिंग प्रकार के मापदंडों का परिचय देती है जो कार्यों को विभिन्न प्रकारों पर संचालित करने की अनुमति देती है। रुचि का एक क्षेत्र स्लाइस प्रकारों तक सीमित स्लाइस तर्कों और सामान्य स्लाइस तर्कों के बीच अंतर है।
स्लाइस प्रकारों तक सीमित स्लाइस तर्क
स्लाइस पर विचार करें। ~[]ई द्वारा बाधित पहला तर्क। इसका मतलब है कि इस तर्क का प्रकार ई के तत्व प्रकार के साथ एक स्लाइस प्रकार होना चाहिए।
जेनेरिक स्लाइस तर्क
इसके विपरीत, स्लाइस पर विचार करें। इसमें फ़ंक्शन शामिल है पहले तर्क को केवल []ई के रूप में टाइप किया गया। यह ई के तत्व प्रकार के साथ किसी भी स्लाइस प्रकार के लिए अनुमति देता है। दोनों फ़ंक्शंस को एपेंड और रेंज जैसे स्लाइस ऑपरेशंस तक पहुंचने की अनुमति देते हैं। हालाँकि, जब किसी स्लाइस को वापस करने की बात आती है तो एक सूक्ष्म लेकिन महत्वपूर्ण अंतर होता है।
एक स्लाइस लौटाना
यदि फ़ंक्शन को उसी प्रकार का एक स्लाइस वापस करने की आवश्यकता होती है इनपुट स्लाइस, आपको स्लाइस प्रकार (~[]ई) तक सीमित स्लाइस तर्क का उपयोग करना चाहिए। यह सुनिश्चित करता है कि लौटाए गए स्लाइस में सही अंतर्निहित प्रकार है। ]ई.
func Grow[S ~[]E, E कोई भी](s S, n int) S { // ... } func Grow2[E कोई भी](s []E, n int) []E { // ... }
यदि हम एक कस्टम प्रकार का एक टुकड़ा पास करते हैं (उदाहरण के लिए, []MyInt), तो Grow() उसी प्रकार का मान लौटा सकता है। हालाँकि, Grow2() केवल एक सामान्य स्लाइस प्रकार ([]E) लौटा सकता है।निष्कर्ष
संक्षेप में, यदि आपको उसी का एक स्लाइस वापस करने की आवश्यकता है इनपुट स्लाइस के रूप में टाइप करें, आपको स्लाइस प्रकार (~[]ई) तक सीमित स्लाइस तर्क का उपयोग करना चाहिए। अन्यथा, सामान्य स्लाइस तर्क का उपयोग करना पर्याप्त है।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3