gitlab.com/evatix-go/core@v1.3.55/coredata/coredynamic/LengthOfReflect.go (about)

     1  package coredynamic
     2  
     3  import (
     4  	"reflect"
     5  )
     6  
     7  func LengthOfReflect(reflectVal reflect.Value) int {
     8  	if reflectVal.Kind() == reflect.Ptr {
     9  		return LengthOfReflect(reflect.Indirect(reflect.ValueOf(reflectVal)))
    10  	}
    11  
    12  	switch reflectVal.Kind() {
    13  	case reflect.Slice:
    14  		return reflectVal.Len()
    15  	case reflect.Array:
    16  		return reflectVal.Type().Len()
    17  	case reflect.Map:
    18  		return len(reflectVal.MapKeys())
    19  	default:
    20  		return 0
    21  	}
    22  }