从接口获取方法名称列表
在 Go 中,反射允许在运行时检查和操作程序的内部结构。这包括访问有关接口类型的信息的能力,例如其方法名称。
考虑以下接口:
type FooService interface {
Foo1(x int) int
Foo2(x string) string
}
使用反射获取该接口的方法名称列表:
t := reflect.TypeOf((*FooService)(nil)).Elem()
此行检索实现 FooService 接口的具体类型的 Reflect.Type。
for i := 0; i NumMethod() 函数返回接口中方法的数量。
- 获取方法名称:
s = append(s, t.Method(i).Name)
Method(i)函数返回一个reflect.Method对象,表示索引 i 处的方法。该对象的 Name 字段包含方法的名称。
结果列表将包含方法名称 ["Foo1", "Foo2"]。
说明:
- (*FooService)(nil) 语法用于创建指向 FooService 接口的匿名实例的指针。这是获取接口的reflect.Type所必需的。
- Elem()方法返回实现接口的具体类型的reflect.Type,而不是接口类型本身。
- NumMethod() 函数返回接口中声明的方法数量,即使具体类型实现了其他方法。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3