这段代码在什么情况下可以: v, ok := value.(int64) if !ok { panic("NOPE "+reflect.TypeOf(value).Kind().String()) } else { fmt.Printf("VAL: %d\n",v) }用消息产生恐慌panic: NOPE int64?这是一个错误还是我缺少的数字类型有一些基本的东西?
1 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
如果您在数字类型上使用类型声明,就会发生这种情况。如果你做这样的事情:
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的。
- 1 回答
- 0 关注
- 186 浏览
添加回答
举报
0/150
提交
取消