从 []bytes 解析浮点值的最佳方法是什么?

What's the best way to parse a float value from []bytes?

我有一个函数可以简单地用 ioutil.ReadFile() 读取一个文件。返回的类型是 []byte,尽管值本身可以表示为浮点数。

我正在以这种方式转换 []byte(其中 value 是从读取文件的函数返回的 []byte):

var floatValue float64
fmt.Fscanf(bytes.NewReader(value), "%f", &floatValue)

这真的是从 []byte extract/parse 一个有效浮点值的唯一方法吗?有一个类似的 discussion,但看起来它并没有真正去到任何地方。

为此您可以轻松使用 strconv.ParseFloat,只需先将 []byte 转换为字符串即可。与创建 reader 并使用类似 scanf 的函数进行扫描相比,这肯定会有更少的开销。

sb := []byte("3.1415")
s := string(sb)

f, err := strconv.ParseFloat(s, 64)
if err != nil {
    panic("whoops!")
}

fmt.Printf("%f\n", f)

输出:

3.141500