「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > リフレクションを使用して Go のインターフェイスからメソッド名のリストを取得するにはどうすればよいですか?

リフレクションを使用して Go のインターフェイスからメソッド名のリストを取得するにはどうすればよいですか?

2024 年 11 月 11 日に公開
ブラウズ:200

How do you retrieve a list of method names from an interface in Go using reflection?

インターフェイスからメソッド名のリストを取得する

Go では、リフレクションを使用して実行時にプログラムの内部構造を検査および操作できます。 。これには、メソッド名などのインターフェイス タイプに関する情報にアクセスする機能が含まれます。

次のインターフェイスについて考えてみましょう。

type FooService interface {
    Foo1(x int) int
    Foo2(x string) string
}

リフレクションを使用してこのインターフェイスのメソッド名のリストを取得するには:

  1. インターフェイス タイプのreflect.Typeを取得します:
t := reflect.TypeOf((*FooService)(nil)).Elem()

この行は、FooService インターフェイスを実装する具象型の Reflect.Type を取得します。

  1. メソッドの数を取得します:
for i := 0; i 

NumMethod() 関数は、インターフェイス内のメソッドの数を返します。

  1. メソッド名を取得します:
s = append(s, t.Method(i).Name)

Method(i) 関数は、インデックス i のメソッドを表す Reflect.Method オブジェクトを返します。このオブジェクトの Name フィールドにはメソッドの名前が含まれます。

結果のリストにはメソッド名 ["Foo1", "Foo2"] が含まれます。

説明:

  • (*FooService)(nil) 構文は、FooService インターフェイスの匿名インスタンスへのポインターを作成するために使用されます。これは、インターフェイスのreflect.Typeを取得するために必要です。
  • Elem()メソッドは、インターフェイスの型自体ではなく、インターフェイスを実装する具象型のreflect.Typeを返します。
  • ]NumMethod() 関数は、具象型が追加のメソッドを実装している場合でも、インターフェイスで宣言されたメソッドの数を返します。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3