इंटरफ़ेस के स्लाइस को संगत इंटरफ़ेस स्लाइस में परिवर्तित करना
ओवरलैपिंग तरीकों वाले विभिन्न इंटरफेस को लागू करना प्रोग्रामिंग में लचीलापन प्रदान कर सकता है। हालाँकि, एक इंटरफ़ेस के एक टुकड़े को एक अलग लेकिन संगत इंटरफ़ेस की अपेक्षा वाले फ़ंक्शन में पास करने से त्रुटियां हो सकती हैं। आइए देखें कि गो में इस मुद्दे को कैसे संबोधित किया जाए। ] टाइप ए इंटरफ़ेस { बंद करें() त्रुटि पढ़ें(बी []बाइट) (int, त्रुटि) } इम्प्लांट स्ट्रक्चर टाइप करें {} func (I Impl) पढ़ें(बी []बाइट) (int, त्रुटि) { fmt.Println("पढ़ने में!") वापसी 10, शून्य } func (I Impl) बंद करें() त्रुटि { fmt.Println("मैं यहाँ हूँ!") शून्य वापसी }
व्यक्तिगत वस्तुओं को आसानी से कार्यों में पारित किया जा सकता है। हालाँकि, io.Reader की अपेक्षा वाले कार्यों में A के स्लाइस पास करने का प्रयास विफल हो सकता है।
type A interface {
Close() error
Read(b []byte) (int, error)
}
type Impl struct {}
func (I Impl) Read(b []byte) (int, error) {
fmt.Println("In read!")
return 10, nil
}
func (I Impl) Close() error {
fmt.Println("I am here!")
return nil
}
इसे हल करने के लिए, हम []io.Reader प्रकार का एक नया स्लाइस बना सकते हैं और इसे []ए के तत्वों से भर सकते हैं। यह सीमा को दरकिनार करने और विभिन्न लेकिन ओवरलैपिंग इंटरफ़ेस प्रकारों के बीच संगतता सुनिश्चित करने का समाधान है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3