ホームページ >バックエンド開発 >Golang >Go インターフェースで定義されたメソッド名をプログラムでリストするにはどうすればよいでしょうか?

Go インターフェースで定義されたメソッド名をプログラムでリストするにはどうすればよいでしょうか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-03 08:51:29990ブラウズ

How do you programmatically list the method names defined in a Go interface?

インターフェイス型のメソッド名のリスト

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>

説明:

  1. reflect.TypeOf( (*FooService)(nil)).Elem() はインターフェイスのリフレクト.タイプを取得します。
  2. t.NumMethod() はインターフェイス内のメソッドの数を返します。
  3. t.Method (i) インターフェイスの i 番目のメソッドを取得します。
  4. t.Method(i).Name はメソッドの名前を返します。

Playground 例:

https://go.dev/play/p/6cXnZKiKVw1

ヒント:

「入手方法」に関するドキュメントを参照してください。インターフェースのreflect.Type?」インターフェースのreflect.Typeの取得に関する洞察については。

以上がGo インターフェースで定義されたメソッド名をプログラムでリストするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。