类型开关未检测到float32

时间:2019-01-04 19:42:03

标签: go

combined_pairs = [(extracted_IDs[i], extracted_data[i]) for i in range(len(extracted_IDs))]

由于某种原因,此代码未将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-为什么?我在win x64机器上运行它。

1 个答案:

答案 0 :(得分:4)

  

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

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

  

未类型化的常量具有默认类型,该默认类型是在需要输入值的上下文中将常量隐式转换为的类型,例如,在诸如i:= 0之类的短变量声明中,其中没有显式类型。 无类型常量的默认类型是布尔值,符文,整数, float64 ,complex128或字符串,取决于它是布尔值,符文,整数,浮点,复数或字符串常数