首页 >后端开发 >Golang >如何在 Go 中使用反射检索函数名称?

如何在 Go 中使用反射检索函数名称?

Linda Hamilton
Linda Hamilton原创
2024-11-08 15:37:01464浏览

How to Retrieve a Function's Name Using Reflection in Go?

使用反射检索函数名称

在 Go 中,反射提供了在运行时检查和操作程序结构的机制。访问函数的名称就是这样的用例之一。但是,尝试直接从其类型获取名称可能会导致空字符串。

预期行为

使用reflect.TypeOf(function)检索函数的名称。 Name() 返回一个空字符串,因为它指向类型本身,该类型不包含函数的name.

解决方案

要检索函数的名称,我们需要利用runtime.FuncForPC。该函数获取指向函数反射值的指针并返回指向 *Func 结构的指针。在此 *Func 上调用 Name 方法会产生预期的函数名称:

name := runtime.FuncForPC(reflect.ValueOf(function).Pointer()).Name()

此方法返回包和函数名称,例如“包.功能”。如果需要,可以通过标记字符串来提取包名称。

以上是如何在 Go 中使用反射检索函数名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn