gpt4 book ai didi

json - 为什么 golang json number 不能像 "10"那样转换 int 或 string int?

转载 作者:数据小太阳 更新时间:2023-10-29 03:36:46 29 4
gpt4 key购买 nike

我想把接口(interface)值转换成数字,但是当接口(interface)是数字或者数字字符串时,就不行了,不知道为什么不能这样转换?

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

最佳答案

这是您在 Go 中的示例:

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)
}

Playground :https://play.golang.org/p/iDSxrORX9yc

输出:

10 json.Number
10 json.Number

关于json - 为什么 golang json number 不能像 "10"那样转换 int 或 string int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51480660/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com