fix(DTypeFromData and FlattenData): fixed type check didn't reach data type is a slice

This commit is contained in:
sugarme 2020-07-22 15:26:18 +10:00
parent 959a1c8a99
commit 9f5eccb4e5
2 changed files with 14 additions and 0 deletions

View File

@ -181,6 +181,10 @@ func DTypeFromData(data interface{}) (retVal DType, err error) {
return retVal, err
}
if typ.Kind() == reflect.Slice {
return ToDType(typ.Elem())
}
return ToDType(typ)
}

View File

@ -274,6 +274,16 @@ func FlattenDim(shape []int64) int {
// FlattenData flattens data to 1D array ([]T)
func FlattenData(data interface{}) (fData interface{}, err error) {
// If data is 1D already, just return it.
dataVal := reflect.ValueOf(data)
dataTyp := reflect.TypeOf(data)
if dataVal.Kind() == reflect.Slice {
eleVal := dataTyp.Elem()
if eleVal.Kind() != reflect.Slice {
return data, nil
}
}
flat, err := flattenData(reflect.ValueOf(data).Interface(), 0, []interface{}{})
if err != nil {
return nil, err