Go では、インスタンスなしで Type 記述子を取得することが可能です。 reflect.TypeOf() 関数を利用すると、nil 値へのポインターの型表現にアクセスできます。
<code class="go">t := reflect.TypeOf((*int)(nil)).Elem() fmt.Println(t) // Output: int t = reflect.TypeOf((*http.Request)(nil)).Elem() fmt.Println(t) // Output: http.Request t = reflect.TypeOf((*os.File)(nil)).Elem() fmt.Println(t) // Output: os.File</code>
便利なため、グローバル定数を定義してさまざまな型を表すことができ、reflect を作成する必要がなくなります。型変数:
<code class="go">type TypeDesc int const ( TypeInt TypeDesc = iota TypeHTTPRequest TypeOSFile )</code>
これらの定数を switch ステートメントで使用して、値の型を決定します:
<code class="go">func printType(t TypeDesc) { switch t { case TypeInt: fmt.Println("Type: int") case TypeHTTPRequest: fmt.Println("Type: http.Request") case TypeOSFile: fmt.Println("Type: os.File") } }</code>
型表現に定数を使用すると、次のような利点があります。
以上がインスタンスを使用せずに Go で値の型を決定する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。