Go では、その型のインスタンスを作成せずに変数の型情報を取得することができます。 。これは、reflect.TypeOf 関数を使用して実行できます。
reflect.TypeOf 関数は、型へのポインタを引数として受け取り、reflect.Type 値を返します。型へのポインターは、* 演算子の後に型名を指定することで取得できます。例:
<code class="go">t := reflect.TypeOf((*int)(nil))</code>
このコード行は、int 型へのポインターを作成し、それを変数 t に割り当てます。
ある型へのポインターが別の型へのポインターである場合、reflect.Type 値の Elem メソッドを使用して基本型を取得できます。例:
<code class="go">t = reflect.TypeOf((*http.Request)(nil)).Elem()</code>
このコード行は、http.Request 型へのポインターを作成し、それを変数 t に割り当てます。次に、reflect.Type 値を取得したら、elem メソッドが、reflect.Type 値に対して呼び出され、基本型である http.Request.
が取得されます。 、関数の引数として渡すことができます。たとえば、次の関数は引数としてreflect.Type値を受け取り、型の名前を出力します:
<code class="go">func printType(t reflect.Type) { fmt.Println(t.Name()) }</code>
この関数は次のように使用できます:
<code class="go">t := reflect.TypeOf((*int)(nil)) printType(t)</code>
Thisコード行では文字列 "int" が出力されます。
場合によっては、reflect.TypeOf を使用する代わりに型の定数を作成する方が効率的である場合があります。たとえば、次のコードは int 型の定数を作成します。
<code class="go">const TypeInt = reflect.TypeOf((*int)(nil))</code>
この定数は、reflect.TypeOf 式の代わりに使用できます。
<code class="go">printType(TypeInt)</code>
このコードは、文字列「int」を出力します。
以上がインスタンスを作成せずに Go で変数の型情報を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。