go NaN

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  
获取

经过测试,类似strconvencoding/json正常解析一个非正常float64字符串到float64,都是直接报错的,并没有出现NaN,目前我只发现底下这一种可能会遇到的业务场景

var i flaot64 = 0.0  
fmt.Printf("%s\n", i)