我遇到了一个Golang测验,它使用NaN作为 map 键,运行起来没有任何错误.如果map的键应该是可比较的,那么NaN是一个可比较的类型,还是这是一个允许将NaN作为键的编译器错误.
这是quiz source、go playground link和下面的代码.
package main
var x = 0.0
func main() {
var a = x / x // a = NaN
var m = map[float64]int{a: 1}
m[a] = 2
for k := range m {
delete(m, k)
}
println(len(m)) // prints 2
}