in binding-go/client.go [345:365]
func normalizeMultiDimSpace(obs []interface{}) (interface{}, error) {
firstElem, err := normalizeSpaceElem(obs[0])
if err != nil {
return nil, err
}
elemType := reflect.TypeOf(firstElem)
sliceType := reflect.SliceOf(elemType)
slice := reflect.MakeSlice(sliceType, len(obs), len(obs))
for i, x := range obs {
obj, err := normalizeSpaceElem(x)
if err != nil {
return nil, err
}
val := reflect.ValueOf(obj)
if val.Type() != elemType {
return nil, errors.New("unsupported observation: heterogeneous array")
}
slice.Index(i).Set(val)
}
return slice.Interface(), nil
}