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

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

Linda Hamilton
发布: 2024-11-08 15:37:01
原创
472 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板