将接口转换为go中的float32
使用类型断言无法将接口{}转换为float32将接口转换为go中的float32,go,types,floating-point,Go,Types,Floating Point,使用类型断言无法将接口{}转换为float32 package main import ( "fmt" ) func main() { var i interface{} i = 1.1 num, ok := i.(float32) fmt.Println(ok) fmt.Println(num) } 这将打印false和0。如何将接口{}转换为float32?当代码运行时: i = 1.1 它将float64值分配给
package main
import (
"fmt"
)
func main() {
var i interface{}
i = 1.1
num, ok := i.(float32)
fmt.Println(ok)
fmt.Println(num)
}
这将打印false和0。如何将接口{}转换为float32?当代码运行时:
i = 1.1
它将float64
值分配给变量i
;这是Go中十进制数文本的默认类型。当您尝试将其转换为float32
时,它会失败,因为这不是i
的基本类型
如果要将i
转换为float32
,则需要在其中输入float32
值:
i = float32(1.1)
而这种转变将会成功。如果您希望能够转换为
float32
或float64
,您可以尝试转换为这两种类型,如果转换为float64
成功,您可以将结果转换为float32
,以回答您的问题:
如何将接口{}转换为float32
一点也不
您所能做的就是将float32存储在接口{}中,然后再次键入assert。代码的问题是没有存储float32。
i=float32(1.1)
。否则编译器怎么知道您想要浮点32?文字1.1是非类型化的。@mgagnon接口{}的值来自用户输入,因此idk如果它是1.1或之前的其他值。I try num:=float32(I)有以下错误:无法将I(类型接口{})转换为类型float32:需要类型断言您可以这样做。但是你真的需要一辆浮动车吗?正如cd1在其回答中所说,float64是go中的默认浮点类型,因此断言float64在您的最小示例中有效。