神秘类型断言失败?

这段代码在什么情况下可以:


        v, ok := value.(int64)

        if !ok  {

            panic("NOPE "+reflect.TypeOf(value).Kind().String())

        } else {

            fmt.Printf("VAL: %d\n",v)

        }

用消息产生恐慌panic: NOPE int64?


这是一个错误还是我缺少的数字类型有一些基本的东西?


白板的微信
浏览 188回答 1
1回答

侃侃尔雅

如果您在数字类型上使用类型声明,就会发生这种情况。如果你做这样的事情:type T int64 ...var value interface{} = T(1)并将其放入您的代码中,您将得到完全相同的错误。但是如果你不检查种类,而是检查类型,你会看到这里发生了什么:v, ok := value.(int64)if !ok {    panic("NOPE " + reflect.TypeOf(value).String())} else {    fmt.Printf("VAL: %d\n", v)}产生消息:panic: NOPE main.T该kind的T为Int64的,但是value是不是Int64的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go