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机器上运行它。
答案 0 :(得分:4)
由于某种原因,此代码未将4.0值检测为float32,但将其检测为float64-为什么?
因为float64
是无类型浮点常量的default type。相关部分强调:
未类型化的常量具有默认类型,该默认类型是在需要输入值的上下文中将常量隐式转换为的类型,例如,在诸如i:= 0之类的短变量声明中,其中没有显式类型。 无类型常量的默认类型是布尔值,符文,整数, float64 ,complex128或字符串,取决于它是布尔值,符文,整数,浮点,复数或字符串常数。