NaN
之前阅读源码,发现golang的可比性和map里面都有NaN的特判
以前写js可知,NaN与任何浮点型比较都是false,包括它自己
// main.go
package main
import (
"fmt"
"math"
)
type TestFloat struct {
Float64 float64 `json:"float64"`
}
func main() {
mp := make(map[float64]int)
mp[math.NaN()] = 12
mp[math.NaN()] = 14
for i, v := range mp {
fmt.Printf("%f %d\n", i, v)
}
}
// ./main
NaN 12
NaN 14
获取
经过测试,类似strconv、encoding/json正常解析一个非正常float64字符串到float64,都是直接报错的,并没有出现NaN,目前我只发现底下这一种可能会遇到的业务场景
var i flaot64 = 0.0
fmt.Printf("%s\n", i)