From 48265441e2df681f8b4e8f8d112c3c183e0f2f00 Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 12 Sep 2019 11:04:57 +0800 Subject: [PATCH] =?UTF-8?q?-=20TryInterface2Int64=E5=92=8CTryInterface2Flo?= =?UTF-8?q?at64=E5=85=BC=E5=AE=B9string?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/typeconv.go | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/utils/typeconv.go b/utils/typeconv.go index df233bca..123a6b9c 100644 --- a/utils/typeconv.go +++ b/utils/typeconv.go @@ -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 {