我不明白为什么第一个结果是假的,而第二个结果是真的。
任何帮助将不胜感激。
任何帮助将不胜感激。
func main() {
var i interface{}
i = uint64(0)
fmt.Println("[1] ", reflect.TypeOf(i), i == 0)
i = 0
fmt.Println("[2] ", reflect.TypeOf(i), i == 0)
var n uint64 = 32
fmt.Println("[3] ", reflect.TypeOf(n), n == 32)
}
// result
// [1] uint64 false
// [2] int true
// [3] uint64 true
在这里尝试一下:Go playground
i.(uint64) == 0
?编译器是否也假定0
是uint64
类型的?https://play.golang.org/p/YT-pZCdI27 - Ngenator0
不是一个int
,它是一个 "未命名常量",由于其在表达式中的位置,因此被转换为默认类型int
。 - JimB