вторник, 2 июня 2020 г.

Использование вида типа объекта в reflect

Тип 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


Читайте также:


Комментариев нет:

Отправить комментарий