Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将接口转换为go中的float32_Go_Types_Floating Point - Fatal编程技术网

将接口转换为go中的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值分配给

使用类型断言无法将接口{}转换为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
值分配给变量
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在您的最小示例中有效。