gpt4 book ai didi

reflection - 神秘的类型断言失败?

转载 作者:IT王子 更新时间:2023-10-29 01:36:33 24 4
gpt4 key购买 nike

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

        v, ok := value.(int64)
if !ok {
panic("NOPE "+reflect.TypeOf(value).Kind().String())
} else {
fmt.Printf("VAL: %d\n",v)
}

用消息 panic: NOPE int64 产生 panic ?

这是一个错误还是我遗漏了一些关于数字类型的基本信息?

最佳答案

如果您在数字类型上使用类型声明,就会发生这种情况。如果你这样做:

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

T 的种类是 int64,但不是 int64。

关于reflection - 神秘的类型断言失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30268300/

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