猿问

将界面转换为 float32 in go

使用类型断言不起作用将 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?


拉莫斯之舞
浏览 76回答 2
2回答

慕运维8079593

当代码运行时:i = 1.1它为变量分配一个值 ;这是 Go 中十进制数文本的默认类型。当您尝试将其转换为 时,它会失败,因为这不是 的基础类型。float64ifloat32i如果要转换为 ,则需要在其中输入一个值:ifloat32float32i = float32(1.1)转换将成功。如果希望能够转换为 或 ,则可以尝试转换为这两种类型,如果转换为成功,则将结果转换为 。float32float64float64float32

呼啦一阵风

要回答您的问题:如何将 interface{} 转换为 float32?一点也不。你所能做的就是在接口{}中存储一个 float32,然后再次键入断言它。代码的问题在于您不存储 float32。
随时随地看视频慕课网APP

相关分类

Go
我要回答