Метод reflect.Value.Type
Метод reflect.Value.Type возвращает reflect.Type,
представляющий динамический тип значения, хранящегося в
reflect.Value. Этот метод полезен, когда вам нужно
получить информацию о типе переменной во время выполнения
программы, например, имя типа, категорию (kind) или другие
свойства типа.
Синтаксис
func (v Value) Type() Type
Пример
Давайте получим тип для целочисленной переменной:
package main
import (
"fmt"
"reflect"
)
func main() {
num := 42
val := reflect.ValueOf(num)
typ := val.Type()
fmt.Println(typ)
fmt.Println(typ.Name())
fmt.Println(typ.Kind())
}
Результат выполнения кода:
"int"
"int"
"int"
Пример
Давайте получим тип для строковой переменной:
package main
import (
"fmt"
"reflect"
)
func main() {
str := "Hello World"
val := reflect.ValueOf(str)
typ := val.Type()
fmt.Println(typ)
fmt.Println(typ.Name())
fmt.Println(typ.Kind())
}
Результат выполнения кода:
"string"
"string"
"string"
Пример
Давайте получим тип для пользовательской структуры:
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Alice", Age: 30}
val := reflect.ValueOf(p)
typ := val.Type()
fmt.Println(typ)
fmt.Println(typ.Name())
fmt.Println(typ.Kind())
}
Результат выполнения кода:
"main.Person"
"Person"
"struct"
Пример
Метод Type также работает с указателями:
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
p := &Person{Name: "Bob", Age: 25}
val := reflect.ValueOf(p)
typ := val.Type()
fmt.Println(typ)
fmt.Println(typ.Name())
fmt.Println(typ.Kind())
// Получаем тип элемента указателя
elemType := typ.Elem()
fmt.Println(elemType)
fmt.Println(elemType.Name())
}
Результат выполнения кода:
"*main.Person"
""
"ptr"
"main.Person"
"Person"
Смотрите также
-
функцию
reflect.TypeOf,
которая возвращает тип переменной без создания reflect.Value -
функцию
reflect.ValueOf,
которая создает reflect.Value из переменной -
метод
reflect.Value.Kind,
который возвращает категорию типа значения -
метод
reflect.Type.Kind,
который возвращает категорию типа