我想将接口值转换为数字,但是当接口是数字或数字字符串时,它将无法工作,我不知道为什么我们不能通过这种方式转换?
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
答案 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)
}