プリミティブ型に基づいて、reflect.Kind を取得することは、PHP プログラミングにおける重要なスキルです。 reflect.Kind は、PHP が提供するリフレクション クラス ライブラリのプロパティであり、変数のデータ型を決定するために使用できます。 Reflect.Kindを利用することで、変数の型を簡単に取得し、それに応じた演算や処理を行うことができます。 PHP 開発者にとって、このスキルを習得すると、リフレクション メカニズムをよりよく理解して使用できるようになり、コードの読みやすさと柔軟性が向上します。この記事では、PHP エディターの Baicao が、プリミティブ型に基づいて Reflect.Kind を取得する方法を詳細に紹介し、読者がこの知識ポイントをよりよく習得できるように、いくつかの実用的な例とテクニックを共有します。
インターフェースを実装する型のreflect.interfaceとしてreflect.kindを使用したいのですが、その実装はプリミティブ型に基づいています: type id string
この質問に対するもう 1 つの答えは、kind() を呼び出すときに、reflect.interfaces を返す型の Reflect.type を取得する方法かもしれません。
これは、外出先のプレイグラウンドでの完全な例です:
type ID interface { myid() } type id string func (id) myid() {} func main() { id := ID(id("test")) fmt.Println(id) fmt.Println(reflect.TypeOf(id)) // How to get the kind to return "reflect.Interface" from the var "id"? fmt.Println(reflect.TypeOf(id).Kind()) }
reflect.typeof()
(および reflect.valueof()
) インターフェース {}
が必要です。基本的に、reflect.typeof()
に渡す値がどのようなものであっても、それがまだインターフェース値でない場合は、暗黙的に interface{}
にラップされます。渡された値がすでにインターフェース値である場合、その中に格納されている具体的な値は interface{}
として渡されます。
この「再パッケージ化」を回避するために、これはインターフェイスへのポインターが意味をなすまれなケースの 1 つであり、実際、ここでそれを回避することはできません。インターフェイス値へのポインタを渡す必要があります。
したがって、インターフェイスへのポインタを渡すと、ポインタは interface{}
値でラップされます。 type.elem()
を使用して、「ポインター型」の型記述子、つまりポインター型の要素型を取得できます。これは、探しているインターフェイス型の型記述子になります。のために。 p>
###例:###
リーリー
出力内容 (
go playgroundで試してください): リーリー 関連する質問を表示:
Go の Reflect.valueof() と value.elem() の違いは何ですか?以上がプリミティブ型に基づく型のreflect.Kinを取得します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。