【发布时间】:2015-07-27 21:32:18
【问题描述】:
什么情况下可以这样编码:
v, ok := value.(int64)
if !ok {
panic("NOPE "+reflect.TypeOf(value).Kind().String())
} else {
fmt.Printf("VAL: %d\n",v)
}
使用消息panic: NOPE int64产生恐慌?
这是一个错误还是我缺少的数字类型有一些基本的东西?
【问题讨论】:
-
如果有帮助,该值是一个
int64通过interface{}函数参数传递到此代码所在的函数中。(这是一个很长的函数,并且在其他地方复制它的简单尝试已经失败...) -
我运行了你的代码,它运行得非常好。问题不在这个sn-p之外。见play.golang.org/p/NCHCVqz13C
-
正如我所说,我无法创建 MCVE - 它只是在 /in situ/ 失败,当然可以自行运行(否则我们会遇到真正的麻烦!)。如果您愿意,“此 sn-p 之外的哪些可能问题可能导致此问题?” - 我根本看不出我所描述的行为可以合法地发生,不管我在其他地方“搞砸了”什么......但我对“合法”的理解可能是不正确的。
-
哦,我可以轻松地重新创建它,方法是执行
type T int64之类的操作并让value引用T。打印reflect.TypeOf(value)会给你带来什么? -
那么,这就解决了。我会发布它作为答案。
标签: reflection types go