- TryInterface2Int64和TryInterface2Float64兼容string

This commit is contained in:
gazebo
2019-09-12 11:04:57 +08:00
parent 9b1e3dfc2f
commit 48265441e2

View File

@@ -7,6 +7,7 @@ import (
"fmt"
"math"
"net/url"
"reflect"
"strconv"
"strings"
"time"
@@ -70,15 +71,13 @@ func TryInterface2Int64(data interface{}) (num int64, err error) {
if dataNumber, ok := data.(int); ok {
return int64(dataNumber), nil
}
dataNumber, ok := data.(json.Number)
if !ok {
return 0, fmt.Errorf("data is not json.Number:%v to int64", data)
if dataNumber, ok := data.(json.Number); ok {
return dataNumber.Int64()
}
retVal, err := dataNumber.Int64()
if err != nil {
return num, err
if str, ok := data.(string); ok {
return Str2Int64(str), nil
}
return retVal, nil
return 0, fmt.Errorf("data is not json.Number, it's %s, value:%v", reflect.TypeOf(data).String(), data)
}
func MustInterface2Int64(data interface{}) int64 {
@@ -114,15 +113,13 @@ func TryInterface2Float64(data interface{}) (num float64, err error) {
if dataNumber, ok := data.(float32); ok {
return float64(dataNumber), nil
}
dataNumber, ok := data.(json.Number)
if !ok {
return num, fmt.Errorf("data is not json.Number:%v", data)
if dataNumber, ok := data.(json.Number); ok {
return dataNumber.Float64()
}
retVal, err := dataNumber.Float64()
if err != nil {
return num, err
if str, ok := data.(string); ok {
return Str2Float64(str), nil
}
return retVal, nil
return 0, fmt.Errorf("data is not json.Number, it's %s, value:%v", reflect.TypeOf(data).String(), data)
}
func MustInterface2Float64(data interface{}) float64 {