登录
首页 >  Golang >  Go问答

未发现类型开关 float32

来源:stackoverflow

时间:2024-03-19 17:54:28 313浏览 收藏

在 Go 语言中,未指定类型浮点常量的默认类型为 float64。因此,尽管 4.0 在数学上是 float32 的有效值,但在 Go 中,它会被隐式转换为 float64,从而导致代码中的类型开关无法将 4.0 检测为 float32。

问题内容

package main

import "fmt"

func main() {
    printType(4.0)
}

func printType(i interface{}) {
    switch i := i.(type) {
    case float32:
        fmt.Println("This is a float type", i)
    }
}

出于某种原因,此代码未将 4.0 值检测为 float32,但将其检测为 float64 - 为什么会这样?我在 win x64 机器上运行它。


解决方案


出于某种原因,此代码未将 4.0 值检测为 float32,但将其检测为 float64 - 这是为什么?

因为 float64 是无类型浮点常量的 default type。相关部分强调:

无类型常量具有默认类型,该类型是常量在需要类型化值的上下文中隐式转换为的类型,例如,在没有显式类型的短变量声明中,例如 i := 0 。 无类型常量的默认类型分别为 bool、rune、int、float64、complex128 或 string,取决于它是否为布尔值,符文、整数、浮点、复数或字符串常量

今天关于《未发现类型开关 float32》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>