Go言語ではオブジェクトの型を知るために reflect
パッケージを使います。
reflect.TypeOf()関数は与えられた値の型を reflect.Type
オブジェクトとして返します。
まずはこちらのサンプルコードを確認してください。
package main
import (
"fmt"
"reflect"
)
func main() {
var a int = 42
var b string = "hello"
fmt.Println(reflect.TypeOf(a)) // "int"
fmt.Println(reflect.TypeOf(b)) // "string"
}
この例では、reflect.TypeOf()
関数を使用して変数 a
と b
の型を取得しています。関数は reflect.Type
オブジェクトを返し、このオブジェクトは値の型を表します。このオブジェクトを使用して、型の名前や基本的な種類など、型に関する情報を取得することができます。
これは構造体なども同じで定義した型をrelect.TypeOfで取得することができます。
reflect
パッケージを使って型情報を取得して動的に構造体のフィールドにアクセスすることができます。また、型情報を取得することで動的に型アサーションを行ったり、型が一致するかどうかをチェックしたりすることもできます。
実行時に型情報を取得する必要がある場合は少ないですが、メタプログラミングやジェネリックなど、より高度なプログラミングテクニックを実現するために必要になってきます。