time.Sleep(time.Second * rand.Intn(10))
为什么*后面跟数字可以,而Intn函数就不行?Intn的返回值是int啊。
golang对于纯数字在编译的时候会自动做类型转换,例如
time.Sleep(time.Second * 5)
这时golang会将5转换为time.Duration类型进行运算
而对于不同类型,如果需要运算,必须显示的做强制转换,
比如,time.Second * rand.Intn(10),其实是 time.Duration 和 int 这两种类型的操作
必须将其转换为同一类型:
time.Sleep(time.Second * time.Duration(rand.Intn(10)))
例如如下定义,虽然都是5,但是完全是不同的类型,不能直接相互做运算操作
var f float32 = 5
var f2 float64 = 5
var i int = 5
var i2 int32 = 5
还有:
type myInt int
这里定义了新类型myInt,其本质和int没啥区别,但是也不能相互做运算,必须强制转换。。。
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答901 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.1k 阅读