ホームページ  >  記事  >  バックエンド開発  >  Go で文字列名から `reflect.Type` を取得できますか?

Go で文字列名から `reflect.Type` を取得できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-09 06:08:02996ブラウズ

Can You Get a `reflect.Type` from a String Name in Go?

Go で型名から Reflect.Type を取得する

次のタスクを考えてみましょう。

type t1 struct { i int; s string }

インスタンス化せずに t1 の Reflect.Type を取得するにはどうすればよいですか?

  • インスタンス化せずに Reflect.Type を取得できますか?

はい、可能です:

var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()

reflect.TypeOf を使用して、t1 型の nil 構造体へのポインタの Reflect.Type を取得できます。次に、Elem を使用して、基になる構造体の型を取得します。

  • 文字列名 "t1" から、reflect.Type を取得できますか?

残念ながら、そうではありません。 Go は現在のバイナリ内の型のマップを維持しないため、文字列から型を取得することは非現実的です。カスタム タイプ レジストリ パッケージを作成することは可能ですが、匿名タイプと名前の衝突により不完全になり、曖昧になる可能性があります。

以上がGo で文字列名から `reflect.Type` を取得できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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