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/6cXnZKiKVw1
ヒント:
「入手方法」に関するドキュメントを参照してください。インターフェースのreflect.Type?」インターフェースのreflect.Typeの取得に関する洞察については。
以上がGo インターフェースで定義されたメソッド名をプログラムでリストするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。