インターフェイスのreflect.Typeの決定
型がreflectパッケージを使用してインターフェイスを実装しているかどうかを確認するには、以下を提供する必要があります。 Reflect.Type.Implements() へのreflect.Type。ただし、このタイプの取得は、特にエラーなどの初期化されていないインターフェイスの場合、謎めいたように思えることがあります。
初期化されていないエラー インターフェイス
初期化されていないエラー (インターフェイス) のタイプを特定しようとしています。 )reflect.TypeOf(err).Kind() を使用すると、Kind() が次の場合にパニックが発生します。
解決策
エラーなどのインターフェースのタイプを正しく取得するには、まずインターフェースへのポインターを作成してから、Elem() を使用する必要があります。結果の型。これは 2 つの方法で実現できます。
詳細メソッド:
var err error t := reflect.TypeOf(&err).Elem()
一行メソッド:
t := reflect.TypeOf((*error)(nil)).Elem()
これらのアプローチに従うことで、初期化に関係なく、インターフェイスのreflect.Typeを効果的に取得できます。状態。
以上がGoで初期化されていないインターフェイスのreflect.Typeを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。