在golang中,很多方法接收的时间参数都是time.Duration类型。例如sleep方法,使用
time.Sleep(1 * time.Second)
其中1 * time.Second
的结果就是time.Duration类型。
但如果想把1换成一个int变量,例如
var num = int(1)
time.Sleep(num * time.Second)
就会报错mismatched types Duration and int
,意思是num * time.Second
是int类型而不是time.Duration类型。看起来有点滑稽。
解决办法是先转换int为time.Duration类型:
var num = int(1)
time.Sleep(time.Duration(num) * time.Second)
不理解为什么会设计成这样。
网友评论