fmt.Println(11 / (10.0 * 1))
s := []byte("hello world")
fmt.Println(len(s) / (10.0 * 1))
stdout:
1.1
1
两个的计算结果为什么不一致:都是int/float
fmt.Println(11 / (10.0 * 1))
s := []byte("hello world")
fmt.Println(len(s) / (10.0 * 1))
stdout:
1.1
1
两个的计算结果为什么不一致:都是int/float
这是因为第一个左侧类型为数值常量,会根据右侧运算值类型float类确定左侧类型,之后再运算,
float/float=float
,所以是1.1,而第二个len
函数返回类型为确定的int,运算会按照左侧类型来执行,右侧被转换为int类型,因此就是int/int=int
值为1自动类型转换参考 https://golang.org/ref/spec#C...