当前位置: 首页 > 面试题库 >

使用反射获取函数名称

史淇
2023-03-14
问题内容

我正在尝试使用Go的反射系统来检索函数的名称,但是在调用其类型的Name方法时会得到一个空字符串。这是预期的行为吗?

这是我如何解决问题的简单示例:

package main

import "fmt"
import "reflect"

func main() {
    typ := reflect.TypeOf(main)
    name := typ.Name()
    fmt.Println("Name of function" + name)
}

问题答案:

解决方案是使用FuncForPc返回一个*Func

返回"main.main"

package main

import "fmt"
import "reflect"
import "runtime"


func main() {
    name := runtime.FuncForPC(reflect.ValueOf(main).Pointer()).Name()
    fmt.Println("Name of function : " + name)
}

如果需要"main",只需将其标记化即可。



 类似资料:
  • 我使用的是selenium pagefactory,并引入了一个注释@Name(Description=“Username”),用于所有WebElement。稍后,我需要在自定义方法中找到描述值,以便进行报告,例如: 我的@Name注释界面和pagefactory如下所示: 名称接口 在使用反射时,我面临的问题是需要定义pagefactory的类名,并提供字段名作为字符串“username”,以检

  • 问题内容: 在这里打印“ Foo”的方式是什么?在此示例中,打印的是“字符串”。 http://play.golang.org/p/ZnK6PRwEPp 问题答案: 你要。上的方法将返回一个结构,该结构描述该字段,其中包括名称以及其他信息。 无法检索代表特定字段值的字段名,因为这是包含结构的属性。

  • 我正在创建许多POJO,并且必须为每个POJO创建方法。我认为创建一个类来使用反射API为我完成工作会更容易——在一个地方创建功能并在每个POJO中使用它。 POJO中的所有字段都是私有的。POJO是JSON对象的Java对象表示。 要求是遍历类中的字段,并列出字段和值。 我目前正在一个名为的类上测试该功能。 下面是我用来列出字段名和值的类: 我将< code>ChannelResource类的一

  • 问题内容: 说我以某种方式从另一个类获得了对象引用: 现在,我可以获取该对象的类: 现在,我可以获得该类的所有构造函数: 现在,我可以循环每个构造函数: 这已经为我很好地总结了构造函数,例如,构造函数public Test(String paramName)显示为public Test(java.lang.String) 但是,我不想获取类的类型,而是要获取参数的名称。在这种情况下,为“ para

  • 问题内容: 如果我有这样的课程: 有没有办法知道使用名为类型的参数? 问题答案: 总结一下: 如果编译期间包含调试信息,则可以获取参数名称。查看此答案以获取更多详细信息 否则得到的参数名称是不是有可能 使用可以获取参数类型 为了编写编辑器的自动完成功能(如你在评论之一中所述),有几个选项: 使用,,等。 使用,等。 结合使用以上内容-前者用于非基本类型,而后者用于基本类型。 根本不显示参数名称-仅

  • 下面是我的示例类,我希望通过在这行中使用反射来获取y和z字段(Field[]fields=forName.getDeclaredFields();)我得到了空数组。如果y和z不是类结构的一部分,那么它们属于哪一部分