インターフェイスのリフレクト.タイプの取得
リフレクト パッケージでインターフェイスを操作する場合は、reflect.Type オブジェクトを取得する必要があります。指定された型がインターフェイスを実装しているかどうかを判断します。この記事では、インターフェイスのreflect.Typeを取得する方法について説明します。
型がインターフェイスを実装しているかどうかを判断する
reflect.Type.Implements() メソッドはオブジェクトを反映し、その型が指定されたインターフェイスを実装しているかどうかを示すブール値を返します。ただし、初期化されていないインターフェイス型の Reflect.Type を取得すると、そのような型の Kind() メソッドにアクセスするとパニックが発生するため、問題が発生する可能性があります。
解決策: インターフェイスの Reflect.Type を取得する
インターフェイスのreflect.Typeを取得するには、次のアプローチを使用します:
メソッド1:
var err error t := reflect.TypeOf(&err).Elem()
このメソッドは、&err ポインターを逆参照して実際のエラー タイプを取得し、Elem() メソッドを使用して基になるインターフェイスのreflect.Type を取得します。
方法 2 (ワンライナー):
t := reflect.TypeOf((*error)(nil)).Elem()
これワンライナーは、インターフェイスへの nil ポインター を直接作成し、その後 Elem() を使用してインターフェイスの Reflect.Type を抽出することにより、方法 1 と同じ結果を実現します。
どちらの方法でも取得したreflect.Typeオブジェクトを使用して、reflect.Type.Implements().
を使用して型がインターフェイスを実装しているかどうかを確認できるようになりました。以上がGo でインターフェイスの `reflect.Type` を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。