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

我如何获得方法参数名称

蔚元明
2023-03-14
问题内容

我有一个很好的功能,可以以给定类型打印有关给定方法的一些信息,这是一个goplay

除了我找不到找到方法参数名称的方法以外,我需要做的所有事情吗?

    func AnalyzeMethod(instance interface {},methodName string){
        m,ok := reflect.ValueOf(instance).Type().MethodByName(methodName)
    if ok{
       isVariadic := m.Type.IsVariadic()
       var VariadicIndex int
       var VariadicType reflect.Type
       var FirstPositionalIndex int
       var LastPositionalIndex int
       var ArgsLength int = m.Type.NumIn()-1
       //var []string ArgumentNames //can't find a way to get an ordered slice of names of every argument that the function takes

       if ArgsLength>0{
         FirstPositionalIndex = 1
       }


       if isVariadic{
         VariadicIndex = ArgsLength
         VariadicType = m.Type.In(VariadicIndex)
         LastPositionalIndex = ArgsLength-1
       } else {
         VariadicIndex = -1
         LastPositionalIndex = ArgsLength
       }

       fmt.Println("ArgsLength:",ArgsLength)    
       fmt.Println("FirstPositionalIndex:",FirstPositionalIndex)
       fmt.Println("LastPositionalIndex:",LastPositionalIndex)  
       fmt.Println("Variadic:",isVariadic)
       fmt.Println("VariadicIndex:",VariadicIndex)
       fmt.Println("VariadicType:",VariadicType)
       fmt.Println("ArgumentNames","How?")

        }
}

问题答案:

局部变量的名称(包括函数参数)仅适用于程序员。编译器在生成代码时将其丢弃。无法检索参数名称,因为它们在编译后的代码中不可用。



 类似资料:
  • 问题内容: 鉴于函数: 如何提取参数的数量和名称。即,鉴于我有提及func,因此我希望返回。 为此的使用场景是,我有一个装饰器,并且希望以与实际函数作为键一样的顺序使用方法参数。即,我打电话时装饰器的外观如何? 问题答案: 看一下模块-这将为你检查各种代码对象属性。 其他结果是 args和* kwargs变量的名称,以及提供的默认值。即。 请注意,在某些Python实现中,某些可调用对象可能不是自

  • 问题内容: 给定以下Go方法: 我想反映参数的名称(在这里)。 我尝试了以下操作,但是它返回了结构名称(在这里): 如何获得参数名称? 问题答案: 无法获取方法或函数的参数名称。 这样做的原因是因为名称对于调用方法或函数的人并不是很重要。重要的是参数的类型及其顺序。 甲功能类型表示集合的具有相同参数和结果类型的所有功能。无论参数名称如何,具有相同参数和结果类型的2个函数的类型均相同。以下代码显示:

  • 问题内容: 在 Java 6中 ,假设我具有以下方法签名: 我想知道在运行时传递给任何其他参数的值,这里重要的一点是我想通过参数名称获取该值。 我知道如何使用或获取参数类型的列表。 理想情况下,我想获取参数 名称 而不是类型的列表。有办法吗? 问题答案: 如果您告诉编译器将其包括在内,则可以使用参数名称(使用调试信息进行编译)。Spring 可以帮助您获取名称。该默认实现使用ASM 这样做。 与您

  • 问题内容: 您好在我的Java类Toto中,我有3个静态方法,我想知道当我处于这些方法之一时,如何在try catch bloc中获取和显示package.class.methode的名称?我在methodeA中尝试过: 但它不起作用,我怎么也可以尝试显示它?谢谢 问题答案: -将打印整个异常stracktrace-即所有方法+行号。

  • 我需要实现采用 Stream 和整数并返回字符串列表的方法。列表应根据整数进行分组 - 从高到低排序,仅返回数字 我想在一个流中完成它,得到这样的东西: 你能帮我这个流吗?我不知道我是否应该使用过滤器。或者也许是前言?这个 只是暂时的。

  • 计算了URL中存在的所有参数: 需要注意的是,url中有几个参数,我只想从中解救一个变量中的以下名称: 属于: 注意:URL中的参数没有固定的顺序。 那么我如何在变量中获取get参数的名称。