एक समारोह को देखते हुए, क्या इसका नाम प्राप्त करना संभव है? कहते हैं:गो में किसी फ़ंक्शन का नाम कैसे प्राप्त करें?
func foo() {
}
func GetFunctionName(i interface{}) string {
// ...
}
func main() {
// Will print "name: foo"
fmt.Println("name:", GetFunctionName(foo))
}
मुझे बताया गया था कि runtime.FuncForPC में मदद मिलेगी, लेकिन मैं समझता हूँ कि यह कैसे उपयोग करने के लिए विफल रहा है।
हालांकि यह काम करता प्रतीत होता है, कुछ देखभाल की आवश्यकता हो सकती है: पॉइंटर() के लिए प्रलेखन "यदि वी का प्रकार Func है, तो लौटा हुआ सूचक एक अंतर्निहित कोड सूचक है, लेकिन एक समारोह को विशिष्ट रूप से पहचानने के लिए पर्याप्त रूप से पर्याप्त नहीं है। केवल गारंटी यह है कि नतीजा शून्य है और केवल तभी यदि v एक nil func मान है। " – jochen
@jochen "एक भी func नहीं" का मतलब है कि यह झूठी सकारात्मक वापसी कर सकता है (यानी एक अलग समारोह के सूचक)? – themihai
@themihai मुझे नहीं पता, मैंने जो वाक्य उद्धृत किया है वह सभी दस्तावेज़ हैं https://golang.org/pkg/reflect/#Value.Pointer इसके बारे में कहते हैं। लेकिन उद्धरण यह इंगित करता है कि किसी को अलग-अलग कार्यों के लिए एक ही सूचक मिल सकता है, है ना? और यदि ऐसा है, तो 'GetFunctionName' अलग-अलग कार्यों के लिए समान नाम वापस कर सकता है? – jochen