गो में, डेवलपर्स अक्सर अपेक्षित व्यवहार को परिभाषित करने के लिए इंटरफ़ेस का उपयोग करते हैं, जिससे कोड लचीला और मजबूत हो जाता है। लेकिन आप यह कैसे सुनिश्चित करते हैं कि एक प्रकार वास्तव में एक इंटरफ़ेस लागू करता है, खासकर एक बड़े कोडबेस में? गो संकलन समय पर इसे सत्यापित करने का एक सरल और प्रभावी तरीका प्रदान करता है, रनटाइम त्रुटियों के जोखिम को रोकता है और आपके कोड को अधिक विश्वसनीय और पठनीय बनाता है।
आपने ऐसा सिंटैक्स देखा होगा
var _ InterfaceName = TypeName{} // or var _ InterfaceName = (*TypeName)(nil)
गो कोड में। यह लेख आपको बताएगा कि ये पंक्तियाँ क्या करती हैं और ये क्यों आवश्यक हैं।
गो में, यह जांचने के लिए कि क्या कोई प्रकार (उदाहरण के लिए, एक संरचना) एक इंटरफ़ेस लागू करता है, आप एक संकलन-समय दावा जोड़ सकते हैं। यह दावा गो कंपाइलर को बताता है, "सुनिश्चित करें कि यह प्रकार इस इंटरफ़ेस को लागू करता है - अभी, रनटाइम पर नहीं।"
इसे करने के दो तरीके हैं:
var _ InterfaceName = TypeName{}
या, यदि इंटरफ़ेस को पॉइंटर रिसीवर की आवश्यकता है:
var _ InterfaceName = (*TypeName)(nil)
यदि टाइपनाम इंटरफ़ेसनाम को पूरी तरह से कार्यान्वित नहीं करता है (यानी, यदि इसमें आवश्यक विधियां गायब हैं), तो गो कंपाइलर तुरंत एक त्रुटि उत्पन्न करेगा। यह सरल जांच यह सुनिश्चित करती है कि आपके कोड चलाने से बहुत पहले ही आपके प्रकार उस इंटरफ़ेस का अनुपालन करते हैं जिसे पूरा करने की उनसे अपेक्षा की जाती है।
TypeName{} और (*TypeName)(nil) के बीच चयन इस बात पर निर्भर करता है कि आपके प्रकार के तरीकों को कैसे परिभाषित किया गया है:
संकलन-समय जांच का उपयोग करने से कई लाभ मिलते हैं:
आइए इसे ठोस बनाने के लिए एक उदाहरण देखें। मान लीजिए कि हमारे पास एक सरल इंटरफ़ेस आकार और एक संरचना सर्कल है:
type Shape interface { Area() float64 } type Circle struct { Radius float64 } func (c Circle) Area() float64 { return 3.14 * c.Radius * c.Radius }
यह सत्यापित करने के लिए कि सर्कल आकार लागू करता है, हम एक संकलन-समय दावा जोड़ सकते हैं:
var _ Shape = Circle{}
या, यदि सर्कल के तरीकों के लिए पॉइंटर रिसीवर की आवश्यकता है:
var _ Shape = (*Circle)(nil)
यह जांचने के लिए संकलन-समय के दावे का उपयोग करना कि क्या कोई प्रकार इंटरफ़ेस को संतुष्ट करता है, गो में सबसे अच्छा अभ्यास है। यह न केवल गारंटी देता है कि प्रकार उनके इंटरफ़ेस अनुबंधों को पूरा करते हैं, रनटाइम त्रुटियों के जोखिम को कम करते हैं, बल्कि कोड पठनीयता और रखरखाव में भी सुधार करते हैं। यह दृष्टिकोण विशेष रूप से बड़े या बहुरूपी कोडबेस में फायदेमंद है जहां इंटरफेस डिजाइन के केंद्र में हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3