diff --git a/to_string.go b/to_string.go index a545eda..b379dee 100644 --- a/to_string.go +++ b/to_string.go @@ -1,44 +1,79 @@ -package convx - -import ( - "errors" - "strconv" -) - -// interface 转 string -func ToString(val interface{}) (str string, err error) { - - var s string - if vv, ok := val.(float32); ok { - s = strconv.FormatFloat(float64(vv), 'f', -1, 32) - } else if vv, ok := val.(float64); ok { - s = strconv.FormatFloat(vv, 'f', -1, 64) - } else if vv, ok := val.(int); ok { - s = strconv.Itoa(vv) - } else if vv, ok := val.(int32); ok { - s = strconv.Itoa(int(vv)) - } else if vv, ok := val.(int64); ok { - s = strconv.FormatInt(vv, 10) - } else if vv, ok := val.(string); ok { - s = vv - } else if vv, ok := val.(bool); ok { - s = strconv.FormatBool(vv) - } else if vv, ok := val.(uint); ok { - s = strconv.FormatUint(uint64(vv), 10) - } else if vv, ok := val.(uint32); ok { - s = strconv.FormatUint(uint64(vv), 10) - } else if vv, ok := val.(uint64); ok { - s = strconv.FormatUint(vv, 10) - } else if vv, ok := val.(uint8); ok { - s = strconv.FormatUint(uint64(vv), 10) - } else if vv, ok := val.(uint16); ok { - s = strconv.FormatUint(uint64(vv), 10) - } else if vv, ok := val.(int8); ok { - s = strconv.FormatInt(int64(vv), 10) - } else if vv, ok := val.(int16); ok { - s = strconv.FormatInt(int64(vv), 10) - } else { - return s, errors.New("不支持的参数类型") - } - return s, nil -} +package convx + +import ( + "errors" + "strconv" +) + +// interface 转 string +// func ToString(val interface{}) (str string, err error) { + +// var s string +// if vv, ok := val.(float32); ok { +// s = strconv.FormatFloat(float64(vv), 'f', -1, 32) +// } else if vv, ok := val.(float64); ok { +// s = strconv.FormatFloat(vv, 'f', -1, 64) +// } else if vv, ok := val.(int); ok { +// s = strconv.Itoa(vv) +// } else if vv, ok := val.(int32); ok { +// s = strconv.Itoa(int(vv)) +// } else if vv, ok := val.(int64); ok { +// s = strconv.FormatInt(vv, 10) +// } else if vv, ok := val.(string); ok { +// s = vv +// } else if vv, ok := val.(bool); ok { +// s = strconv.FormatBool(vv) +// } else if vv, ok := val.(uint); ok { +// s = strconv.FormatUint(uint64(vv), 10) +// } else if vv, ok := val.(uint32); ok { +// s = strconv.FormatUint(uint64(vv), 10) +// } else if vv, ok := val.(uint64); ok { +// s = strconv.FormatUint(vv, 10) +// } else if vv, ok := val.(uint8); ok { +// s = strconv.FormatUint(uint64(vv), 10) +// } else if vv, ok := val.(uint16); ok { +// s = strconv.FormatUint(uint64(vv), 10) +// } else if vv, ok := val.(int8); ok { +// s = strconv.FormatInt(int64(vv), 10) +// } else if vv, ok := val.(int16); ok { +// s = strconv.FormatInt(int64(vv), 10) +// } else { +// return s, errors.New("不支持的参数类型") +// } +// return s, nil +// } + +func ToString(val interface{}) (string, error) { + switch v := val.(type) { + case float32: + return strconv.FormatFloat(float64(v), 'f', -1, 32), nil + case float64: + return strconv.FormatFloat(v, 'f', -1, 64), nil + case int: + return strconv.Itoa(v), nil + case int32: + return strconv.Itoa(int(v)), nil + case int64: + return strconv.FormatInt(v, 10), nil + case string: + return v, nil + case bool: + return strconv.FormatBool(v), nil + case uint: + return strconv.FormatUint(uint64(v), 10), nil + case uint32: + return strconv.FormatUint(uint64(v), 10), nil + case uint64: + return strconv.FormatUint(v, 10), nil + case uint8: + return strconv.FormatUint(uint64(v), 10), nil + case uint16: + return strconv.FormatUint(uint64(v), 10), nil + case int8: + return strconv.FormatInt(int64(v), 10), nil + case int16: + return strconv.FormatInt(int64(v), 10), nil + default: + return fmt.Sprintf("%v", val), nil + } +}