【发布时间】:2021-07-30 14:41:38
【问题描述】:
使用类型断言无法将 interface{} 转换为 float32
package main
import (
"fmt"
)
func main() {
var i interface{}
i = 1.1
num, ok := i.(float32)
fmt.Println(ok)
fmt.Println(num)
}
https://play.golang.org/p/iEJWLbBCHs8
这会打印 false 和 0。如何将 interface{} 转换为 float32?
【问题讨论】:
-
i = float32(1.1)。否则编译器怎么知道你想要float32?文字 1.1 没有类型。 -
@mgagnon interface{} 值来自用户输入,所以如果它是 1.1 或其他东西,请事先确认。我尝试 num := float32(i) 有这个错误:cannot convert i (type interface {}) to type float32: need type assertion
-
你可以这样做。 play.golang.org/p/OPiXEAWvEVl 。但是你绝对需要一个 float32 吗?正如 cd1 在其回答中所说,float64 是 go 中的默认浮点类型,因此断言 float64 将在您的最小示例中起作用。
标签: go types floating-point