Тип Kind пакета reflect представляет специфический вид типа, который представляет Type (тип объекта в Go) в пакете reflect. Нулевой Kind не является допустимым видом.
type Kind uint
const (
Invalid Kind = iota
Bool
Int
Int8
Int16
Int32
Int64
Uint
Uint8
Uint16
Uint32
Uint64
Uintptr
Float32
Float64
Complex64
Complex128
Array
Chan
Func
Interface
Map
Ptr
Slice
String
Struct
UnsafePointer
)
Пример импользования Kind
package main
import (
"fmt"
"reflect"
)
func main() {
for _, v := range []interface{}{"hi", 42, func() {}} {
switch v := reflect.ValueOf(v); v.Kind() {
case reflect.String:
fmt.Println(v.String())
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
fmt.Println(v.Int())
default:
fmt.Printf("unhandled kind %s", v.Kind())
}
}
}
Вывод:
hi
42
unhandled kind func
Читайте также:
- Метод reflect.DeepEqual для сравнивания двух объектов
- Спецификация Go: типы (types)
- Спецификация Go: свойства типов и значений - идентичность типа (Type identity)
Комментариев нет:
Отправить комментарий