为什么golang json号不能转换int或字符串int,如“ 10”?

时间:2018-07-23 14:00:52

标签: json go type-conversion

我想将接口值转换为数字,但是当接口是数字或数字字符串时,它将无法工作,我不知道为什么我们不能通过这种方式转换?

package main

import (
    "encoding/json"
    "fmt"
    "reflect"
)

func main() {
    number := 10
    strNumber := "10"
    test(number)
    test(strNumber)
}

func test(i interface{}) {
    strNum, ok := i.(json.Number)
    fmt.Println(strNum, ok, reflect.TypeOf(i))
}

它将产生如下结果:

   false int
   false string

1 个答案:

答案 0 :(得分:0)

这是您在Go中的示例:

export function calculateInterest(principal, rate, time) {
    var interest = (principal * rate * time) / 100
    return interest
}

游乐场:https://play.golang.org/p/iDSxrORX9yc

输出:

package main

import (
    "encoding/json"
    "fmt"
    "strconv"
)

func main() {
    number := 10
    strNumber := "10"
    test(number)
    test(strNumber)
}

func test(i interface{}) {
    var strNum string
    switch x := i.(type) {
    case int:
        strNum = strconv.Itoa(x)
    case string:
        if _, err := strconv.ParseInt(x, 10, 64); err == nil {
            strNum = x
        }
    }
    jsonNum := json.Number(strNum)
    fmt.Printf("%[1]v %[1]T\n", jsonNum)
}