インスタンス化せずに Go 型の文字列表現をプログラムで取得するにはどうすればよいですか?

DDD
リリース: 2024-11-23 11:58:12
オリジナル
375 人が閲覧しました

How Can I Programmatically Get the String Representation of a Go Type Without Instantiation?

型の文字列表現をプログラムで取得する方法

Go でカスタム型を操作する場合、動的操作のための文字列表現を取得したり、コードのリファクタリングを容易にします。 fmt.Sprintf("%T", ID{}) の使用は簡単なアプローチですが、型のインスタンス化が必要となり、これは望ましくない可能性があります。

Reflection の使用

代わりに、これを実現するには、reflect パッケージを使用します。 Reflect.TypeOf 関数を利用し、型へのポインターを操作することにより、Type.Elem() を使用して型の基本型または要素型を取得できます。例:

t := reflect.TypeOf((*ID)(nil)).Elem()
name := t.Name()
fmt.Println(name)
ログイン後にコピー

このアプローチはインスタンス化の必要性を回避し、インターフェイスにも適用できます。型へのポインタから開始すると、その基礎となる具象型に移動できます。

出力例

提供されたサンプル コードを実行すると、ID 型の文字列表現が出力されます。

ID
ログイン後にコピー

考慮事項

型が次の場合、Type.Name() は空の文字列を返す可能性があることに注意することが重要です。無名。これは通常、匿名の構造体や関数の結果を使用する場合など、型が名前なしで定義されている場合に発生します。

以上がインスタンス化せずに Go 型の文字列表現をプログラムで取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート