in cfn/encoding/unstringify.go [176:208]
func convertType(t reflect.Type, i interface{}) (reflect.Value, error) {
pointer := false
if t.Kind() == reflect.Ptr {
pointer = true
t = t.Elem()
}
switch t.Kind() {
case reflect.Struct:
return convertStruct(i, t, pointer)
case reflect.Slice:
return convertSlice(i, t, pointer)
case reflect.Map:
return convertMap(i, t, pointer)
case reflect.String:
return convertString(i, pointer)
case reflect.Bool:
return convertBool(i, pointer)
case reflect.Int:
return convertInt(i, pointer)
case reflect.Float64:
return convertFloat64(i, pointer)
default:
return zeroValue, fmt.Errorf("Unsupported type %v", t)
}
}