Константа reflect.Struct
Константа reflect.Struct представляет собой значение типа reflect.Kind,
которое обозначает категорию структурных типов в Go. Она используется для проверки,
является ли значение, полученное через рефлексию, структурой. В первом параметре
функция reflect.ValueOf принимает значение для анализа, а затем с помощью
метода Kind можно сравнить результат с константой reflect.Struct.
Синтаксис
reflect.Struct
Константа используется для сравнения с результатом метода Kind
у значения типа reflect.Value или reflect.Type.
Пример с проверкой типа структуры
Давайте проверим, является ли переменная типа Person структурой:
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{"Alice", 30}
v := reflect.ValueOf(p)
if v.Kind() == reflect.Struct {
fmt.Println("p is a struct")
} else {
fmt.Println("p is not a struct")
}
}
Результат выполнения кода:
"p is a struct"
Пример с проверкой типа не структуры
Давайте проверим, является ли переменная типа int структурой:
package main
import (
"fmt"
"reflect"
)
func main() {
num := 42
v := reflect.ValueOf(num)
if v.Kind() == reflect.Struct {
fmt.Println("num is a struct")
} else {
fmt.Println("num is not a struct")
}
}
Результат выполнения кода:
"num is not a struct"
Пример использования с reflect.Type
Константа reflect.Struct также работает с типом reflect.Type:
package main
import (
"fmt"
"reflect"
)
type Address struct {
City string
Zip int
}
func main() {
t := reflect.TypeOf(Address{})
if t.Kind() == reflect.Struct {
fmt.Println("Address is a struct type")
}
fmt.Println("Kind:", t.Kind())
}
Результат выполнения кода:
"Address is a struct type"
"Kind: struct"
Смотрите также
-
константу
reflect.Kind,
которая представляет базовые категории типов -
тип
reflect.Type,
который предоставляет информацию о типе во время выполнения -
тип
reflect.Value,
который предоставляет доступ к значению во время выполнения -
функцию
reflect.TypeOf,
которая возвращает тип переданного значения