Go 中的参数名称检索
考虑以下 Go 方法:
func (t *T) TMethod(data *testData) (interface{}, *error) { ... }
如果您想确定参数的名称(即数据),尝试使用以下代码将导致检索结构name:
reflect.ValueOf(T).MethodByName("TMethod").Type.In(0).Elem().Name()
遗憾的是,获取函数或方法参数的名称在 Go 中是不可行的。这主要是因为调用此类函数时参数名称无关紧要。相反,重点在于它们的类型和顺序。此外,允许定义函数或方法而不为其参数分配名称,如下所示:
func NamelessParams(int, string) {}
有关这方面的更多详细信息,请参阅关于未命名参数的讨论Go?
或者,如果您的目标是建立一个框架,允许将值传递给具有指定名称的参数(例如,将 API 参数映射到 Go 函数/方法参数),考虑使用结构体或映射。这是因为结构体和映射允许分别通过 Value.FieldByName() 和 Type.FieldByName() 等方法检索命名字段和键。
以上是如何获取Go函数的参数名称?的详细内容。更多信息请关注PHP中文网其他相关文章!