在 Go 中,接口定义了类型必须实现的方法契约。在运行时与接口交互时,您可能需要访问其方法的名称。
问题:
考虑以下接口定义:
type FooService interface { Foo1(x int) int Foo2(x string) string }
如何以编程方式从 FooService 接口生成方法名称列表,即 ["Foo1", "Foo2"]?
答案:
要从接口类型中检索方法名称列表,可以使用运行时反射:
<code class="go">t := reflect.TypeOf((*FooService)(nil)).Elem() var s []string for i := 0; i < t.NumMethod(); i++ { s = append(s, t.Method(i).Name) }</code>
说明:
Playground 示例:
https://go.dev/play/p/6cXnZKiKiKVw1
提示:
请参阅“如何获取接口的reflect.Type?”有关获取接口的 Reflect.Type 的见解。
以上是如何以编程方式列出 Go 接口中定义的方法名称?的详细内容。更多信息请关注PHP中文网其他相关文章!