ホームページ >バックエンド開発 >Golang >Go でインターフェイスの `reflect.Type` を取得する方法は?

Go でインターフェイスの `reflect.Type` を取得する方法は?

DDD
DDDオリジナル
2024-12-24 04:45:10678ブラウズ

How to Retrieve the `reflect.Type` of an Interface in Go?

インターフェイスの Reflect.Type の取得

reflect パッケージを介して型がインターフェイスを実装しているかどうかを判断するには、reflect.Type を渡す必要があります。反映.Type.Implements()。この記事では、そのような型を取得するプロセスについて説明します。

初期化されていないインターフェイスの型を取得する

初期化されていないエラー インターフェイス (インターフェイス) の型を取得しようとしています。 type) で、reflect.TypeOf() を直接使用すると、取得した型の Kind() メソッドにアクセスしようとするとパニックが発生します。この問題を回避するには、次のアプローチを使用できます。

アプローチ 1:

var err error
t := reflect.TypeOf(&err).Elem()

このアプローチには、インターフェイスへのポインターの型を取得することが含まれます。次に、次を使用して基礎となる具象タイプ (要素) を取得します。 Elem().

アプローチ 2 (ワンライナー):

t := reflect.TypeOf((*error)(nil)).Elem()

このアプローチは、nil インターフェイス値を任意のインターフェイスに型アサートできるという事実を利用します。タイプ。目的のインターフェイス型への nil ポインターを作成し、その型を取得することで、変数のアドレスを取得することなく、具象型を直接取得できます。

以上がGo でインターフェイスの `reflect.Type` を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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