ホームページ > バックエンド開発 > Golang > コンパイル時に名前から Go の型表現を取得するにはどうすればよいですか?

コンパイル時に名前から Go の型表現を取得するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-29 19:11:11
オリジナル
1003 人が閲覧しました

How Can I Get a Go Type Representation from Its Name at Compile Time?

リフレクションを使用して Go で名前から型表現を取得する

質問:

どうすればよいですかGo のリフレクションを使用して名前から型表現を取得しますライブラリ?

答え:

この質問を理解できるかどうかは、その解釈にかかっています。基本的に 2 つの観点があります:

実行時のアクセス不能性:

型の名前が実行時に文字列として提供される場合、型表現に変換できません。明示的に参照されていない型は、最終的な実行可能バイナリに含まれない可能性があり、実行時にアクセスできなくなります。

「コーディング」時のアクセシビリティ:

ただし、コーディング (ソース コードの作成または生成) では、指定された型の変数を作成して呼び出しを行わなくても、これを実現できます。 reflect.TypeOf().

埋め込み型の取得:

型付き nil ポインター値を使用して、ポインターの Reflect.Type 記述子から、ポインターのベースまたは要素の型を使用します。 Type.Elem().

例:

t := reflect.TypeOf((*YourType)(nil)).Elem()
ログイン後にコピー

このアプローチでは、変数の作成によって取得される記述子 (t2) と同じ型記述子 (t) が生成されます。種類と使い方Reflect.TypeOf():

var x YourType
t2 := reflect.TypeOf(x)

fmt.Println(t, t2)
fmt.Println(t == t2)
ログイン後にコピー

出力:

main.YourType main.YourType
true
ログイン後にコピー

結論:

型の取得中コンパイルの制約があるため、実行時には表現できませんが、コーディング中に埋め込まれたオブジェクトにアクセスすることで可能になります。型付き nil ポインターのアプローチを使用して型を入力します。

以上がコンパイル時に名前から Go の型表現を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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