Функция reflect.TypeOf
Функция reflect.TypeOf позволяет получить информацию о типе переменной во время выполнения программы. Она принимает один параметр - интерфейсную переменную любого типа, а возвращает объект reflect.Type, который содержит полную информацию о типе переданного значения. Эта функция является точкой входа в мир рефлексии в Go.
Синтаксис
reflect.TypeOf(i interface{}) reflect.Type
Пример "sect"
Давайте получим тип простого строкового значения:
package main
import (
"fmt"
"reflect"
)
func main() {
res := reflect.TypeOf("abcde")
fmt.Println(res)
}
Результат выполнения кода:
"string"
Пример "sect"
Получим тип целого числа:
package main
import (
"fmt"
"reflect"
)
func main() {
res := reflect.TypeOf(42)
fmt.Println(res)
}
Результат выполнения кода:
"int"
Пример "sect"
Получим тип слайса строк:
package main
import (
"fmt"
"reflect"
)
func main() {
res := reflect.TypeOf([]string{"a", "b", "c", "d", "e"})
fmt.Println(res)
}
Результат выполнения кода:
"[]string"
Пример "sect"
Получим тип пользовательской структуры:
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string
Age int
}
func main() {
user := User{Name: "John", Age: 30}
res := reflect.TypeOf(user)
fmt.Println(res)
}
Результат выполнения кода:
"main.User"
Пример "sect"
Получим тип указателя на строку:
package main
import (
"fmt"
"reflect"
)
func main() {
str := "abcde"
ptr := &str
res := reflect.TypeOf(ptr)
fmt.Println(res)
}
Результат выполнения кода:
"*string"
Пример "sect"
Получим тип нулевого значения интерфейса:
package main
import (
"fmt"
"reflect"
)
func main() {
var i interface{}
res := reflect.TypeOf(i)
fmt.Println(res)
}
Результат выполнения кода:
"<nil>"
Смотрите также
-
функцию
reflect.ValueOf,
которая возвращает значение переменной в виде объекта reflect.Value -
метод
reflect.Type.Kind,
который возвращает базовый тип (Kind) значения -
метод
reflect.Type.Name,
который возвращает имя типа -
метод
reflect.Type.Elem,
который возвращает тип элемента для составных типов