РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1464 of 1593 menu

Тип reflect.Kind

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

Синтаксис

type Kind uint

Для получения значения reflect.Kind используется метод reflect.Value.Kind или метод reflect.Type.Kind. Оба метода возвращают константу типа reflect.Kind, которая позволяет определить категорию переданного значения.

Пример с типами int и string

Давайте определим категорию типов для целого числа и строки:

package main import ( "fmt" "reflect" ) func main() { var num int = 42 var str string = "hello" fmt.Println(reflect.TypeOf(num).Kind()) fmt.Println(reflect.TypeOf(str).Kind()) }

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

"int" "string"

Пример с пользовательским типом

Давайте посмотрим, как reflect.Kind работает с пользовательским типом и структурой:

package main import ( "fmt" "reflect" ) type MyInt int type Person struct { Name string Age int } func main() { var myNum MyInt = 10 var p Person fmt.Println(reflect.TypeOf(myNum).Kind()) fmt.Println(reflect.TypeOf(p).Kind()) }

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

"int" "struct"

Пример с указателем и срезом

Давайте определим категорию типов для указателя и среза:

package main import ( "fmt" "reflect" ) func main() { var ptr *int var slice []int fmt.Println(reflect.TypeOf(ptr).Kind()) fmt.Println(reflect.TypeOf(slice).Kind()) }

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

"ptr" "slice"

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

Давайте проверим категорию типа и выполним разные действия:

package main import ( "fmt" "reflect" ) func processValue(v interface{}) { val := reflect.ValueOf(v) switch val.Kind() { case reflect.Int: fmt.Printf("Integer: %d\n", val.Int()) case reflect.String: fmt.Printf("String: %s\n", val.String()) case reflect.Slice: fmt.Printf("Slice length: %d\n", val.Len()) default: fmt.Printf("Other kind: %s\n", val.Kind()) } } func main() { processValue(42) processValue("hello") processValue([]int{1, 2, 3}) processValue(true) }

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

"Integer: 42" "String: hello" "Slice length: 3" "Other kind: bool"

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

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