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 }