इंटरफ़ेस से विधि नामों की एक सूची प्राप्त करना
गो में, प्रतिबिंब रनटाइम पर किसी प्रोग्राम की आंतरिक संरचना का निरीक्षण और हेरफेर करने की अनुमति देता है . इसमें इंटरफ़ेस प्रकार के बारे में जानकारी तक पहुंचने की क्षमता शामिल है, जैसे कि इसकी विधि नाम।
निम्न इंटरफ़ेस पर विचार करें:
type FooService interface {
Foo1(x int) int
Foo2(x string) string
}
प्रतिबिंब का उपयोग करके इस इंटरफ़ेस के लिए विधि नामों की एक सूची प्राप्त करने के लिए:
t := reflect.TypeOf((*FooService)(nil)).Elem()
यह पंक्ति उस ठोस प्रकार के लिए reform.Type को पुनः प्राप्त करती है जो FooService इंटरफ़ेस को लागू करता है।
for i := 0; i NumMethod() फ़ंक्शन इंटरफ़ेस में विधियों की संख्या लौटाता है।
- विधि नाम प्राप्त करें:
s = append(s, t.Method(i).Name)
मेथड(i) फ़ंक्शन इंडेक्स i पर विधि का प्रतिनिधित्व करने वाला एक प्रतिबिंबित.मेथड ऑब्जेक्ट देता है। इस ऑब्जेक्ट के नाम फ़ील्ड में विधि का नाम शामिल है। &&&]
(*FooService)(nil) सिंटैक्स का उपयोग FooService इंटरफ़ेस के एक अनाम उदाहरण के लिए एक पॉइंटर बनाने के लिए किया जाता है। इंटरफ़ेस के लिए रिफ्लेक्ट.टाइप प्राप्त करने के लिए यह आवश्यक है।एलेम() विधि इंटरफ़ेस प्रकार के बजाय इंटरफ़ेस को लागू करने वाले ठोस प्रकार के लिए रिफ्लेक्ट.टाइप लौटाती है।
NumMethod() फ़ंक्शन इंटरफ़ेस में घोषित विधियों की संख्या लौटाता है, भले ही ठोस प्रकार अतिरिक्त विधियों को लागू करता हो।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3