为了账号安全,请及时绑定邮箱和手机立即绑定

我如何获取方法参数名称

我如何获取方法参数名称

Go
梦里花落0921 2021-09-13 16:14:39
我有一个很好的函数,可以打印给定类型中给定方法的一些信息,这是一个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?")        }}
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

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


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信