"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > आप प्रतिबिंब का उपयोग करके गो में इंटरफ़ेस से विधि नामों की सूची कैसे पुनर्प्राप्त करते हैं?

आप प्रतिबिंब का उपयोग करके गो में इंटरफ़ेस से विधि नामों की सूची कैसे पुनर्प्राप्त करते हैं?

2024-11-11 को प्रकाशित
ब्राउज़ करें:789

How do you retrieve a list of method names from an interface in Go using reflection?

इंटरफ़ेस से विधि नामों की एक सूची प्राप्त करना

गो में, प्रतिबिंब रनटाइम पर किसी प्रोग्राम की आंतरिक संरचना का निरीक्षण और हेरफेर करने की अनुमति देता है . इसमें इंटरफ़ेस प्रकार के बारे में जानकारी तक पहुंचने की क्षमता शामिल है, जैसे कि इसकी विधि नाम।

निम्न इंटरफ़ेस पर विचार करें:

type FooService interface {
    Foo1(x int) int
    Foo2(x string) string
}

प्रतिबिंब का उपयोग करके इस इंटरफ़ेस के लिए विधि नामों की एक सूची प्राप्त करने के लिए:

  1. प्रतिबिंब प्राप्त करें। इंटरफ़ेस प्रकार के लिए टाइप करें:
t := reflect.TypeOf((*FooService)(nil)).Elem()

यह पंक्ति उस ठोस प्रकार के लिए reform.Type को पुनः प्राप्त करती है जो FooService इंटरफ़ेस को लागू करता है।

  1. विधियों की संख्या पुनर्प्राप्त करें:
for i := 0; i 

NumMethod() फ़ंक्शन इंटरफ़ेस में विधियों की संख्या लौटाता है।

  1. विधि नाम प्राप्त करें:
s = append(s, t.Method(i).Name)

मेथड(i) फ़ंक्शन इंडेक्स i पर विधि का प्रतिनिधित्व करने वाला एक प्रतिबिंबित.मेथड ऑब्जेक्ट देता है। इस ऑब्जेक्ट के नाम फ़ील्ड में विधि का नाम शामिल है। &&&]

(*FooService)(nil) सिंटैक्स का उपयोग FooService इंटरफ़ेस के एक अनाम उदाहरण के लिए एक पॉइंटर बनाने के लिए किया जाता है। इंटरफ़ेस के लिए रिफ्लेक्ट.टाइप प्राप्त करने के लिए यह आवश्यक है।

एलेम() विधि इंटरफ़ेस प्रकार के बजाय इंटरफ़ेस को लागू करने वाले ठोस प्रकार के लिए रिफ्लेक्ट.टाइप लौटाती है।

NumMethod() फ़ंक्शन इंटरफ़ेस में घोषित विधियों की संख्या लौटाता है, भले ही ठोस प्रकार अतिरिक्त विधियों को लागू करता हो।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3