リフレクションを使用して 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 サイトの他の関連記事を参照してください。