प्रयोगात्मक स्लाइस पैकेज से दो कार्यों पर विचार करें: सम्मिलित करें और बढ़ें। दोनों फ़ंक्शन स्लाइस तर्क स्वीकार करते हैं, लेकिन विभिन्न प्रकार की बाधाओं के साथ:
Contains के पहले तर्क में प्रकार है []ई, जहां ई तुलनीय द्वारा बाधित है, यह दर्शाता है कि ई तुलनीय होना चाहिए . दूसरी ओर, ग्रो के पहले तर्क में S प्रकार है, जो ~[]E द्वारा बाधित है, यह दर्शाता है कि S में एक अंतर्निहित प्रकार होना चाहिए जो E का एक टुकड़ा है।
पहली नज़र में, ऐसा लग सकता है कि इन दो प्रकार की बाधाओं के उपयोग के बीच कोई व्यावहारिक अंतर नहीं है। हालाँकि, यह ऐसा मामला नहीं है जब आपको ग्रो में तर्क के समान प्रकार का एक स्लाइस वापस करने की आवश्यकता होती है। इनपुट तर्क के समान प्रकार का एक स्लाइस, आपको एक प्रकार के पैरामीटर का उपयोग करना चाहिए जो स्वयं एक स्लाइस तक सीमित हो (उदाहरण के लिए, ~[]ई)। यह फ़ंक्शन को तर्क के समान प्रकार का मान लौटाने की अनुमति देता है।
आइए ग्रो के दो कार्यान्वयनों पर विचार करें:
जब एक कस्टम प्रकार के स्लाइस को उसके अंतर्निहित प्रकार के रूप में एक स्लाइस के साथ पास किया जाता है , Grow उसी प्रकार का मान लौटा सकता है, जबकि Grow2 नहीं लौटा सकता। Grow2 केवल एक अनाम स्लाइस प्रकार का मान लौटा सकता है, []ई.
func Grow[S ~[]E, E any](s S, n int) S // Grow returns a slice of the same type as s func Grow2[E any](s []E, n int) []E // Grow2 returns a slice of type []E
type ints []int // उपयोगकर्ता-परिभाषित स्लाइस प्रकार ints x := []int{1} // प्रकार का एक स्लाइस x प्रारंभ करें []int x2 := Grow(x, 10) // x2 प्रकार का होगा []int y := ints{1} // प्रकार ints का एक स्लाइस y प्रारंभ करें y2 := Grow(y, 10) // y2 ints प्रकार का होगा
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3