Константа reflect.Struct

Константа reflect.Struct представляет собой значение типа reflect.Kind, которое обозначает категорию структурных типов в Go. Она используется для проверки, является ли значение, полученное через рефлексию, структурой. В первом параметре функция reflect.ValueOf принимает значение для анализа, а затем с помощью метода Kind можно сравнить результат с константой reflect.Struct.

Синтаксис

goreflect.Struct

Константа используется для сравнения с результатом метода Kind у значения типа reflect.Value или reflect.Type.

Пример с проверкой типа структуры

Давайте проверим, является ли переменная типа Person структурой:

gopackage 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")
  }
}

Результат выполнения кода:

go"p is a struct"

Пример с проверкой типа не структуры

Давайте проверим, является ли переменная типа int структурой:

gopackage 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")
  }
}

Результат выполнения кода:

go"num is not a struct"

Пример использования с reflect.Type

Константа reflect.Struct также работает с типом reflect.Type:

gopackage 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())
}

Результат выполнения кода:

go"Address is a struct type"
"Kind: struct"

Смотрите также

  • константу reflect.Kind,
    которая представляет базовые категории типов
  • тип reflect.Type,
    который предоставляет информацию о типе во время выполнения
  • тип reflect.Value,
    который предоставляет доступ к значению во время выполнения
  • функцию reflect.TypeOf,
    которая возвращает тип переданного значения