प्रतिबिंब के साथ फ़ंक्शन नाम पुनर्प्राप्त करें
गो में, प्रतिबिंब रनटाइम पर प्रोग्राम संरचनाओं का निरीक्षण और हेरफेर करने के लिए तंत्र प्रदान करता है। किसी फ़ंक्शन के नाम तक पहुँचना ऐसा ही एक उपयोग मामला है। हालाँकि, सीधे इसके प्रकार से नाम प्राप्त करने का प्रयास करने पर एक खाली स्ट्रिंग हो सकती है। Name() एक खाली स्ट्रिंग लौटाता है क्योंकि यह प्रकार को ही इंगित करता है, जिसमें फ़ंक्शन का नाम नहीं होता है।
Solution
फ़ंक्शन का नाम पुनर्प्राप्त करने के लिए, हम रनटाइम.FuncForPC का उपयोग करने की आवश्यकता है। यह फ़ंक्शन पॉइंटर को फ़ंक्शन के प्रतिबिंबित मान पर ले जाता है और पॉइंटर को *Func struct पर लौटाता है। इस *Func पर नाम विधि को कॉल करने से अपेक्षित फ़ंक्शन नाम इस प्रकार मिलता है:
name := runtime.FuncForPC(reflect.ValueOf(function).Pointer()).Name()यह दृष्टिकोण पैकेज और फ़ंक्शन नाम दोनों लौटाता है, उदा। "पैकेज.फ़ंक्शन"। यदि वांछित है, तो स्ट्रिंग को टोकनाइज़ करके पैकेज का नाम निकाला जा सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3