自定义类型及转化
2017-10-11 本文已影响0人
zzjack
time.Sleep(300*time.Second)
这样的代码是没问题的。但是当300成为变量值的时候,上述写法就会出现异常。
sleep := int64(300)
time.Sleep(sleep*time.Second)
//ERROR :mismatched types time.Duration and int
然后我跑去看源码,我发现time.Duration是type Duration int64
,这说明Duration是个自定义的类型,需要进行类型转化。
a := time.Duration(sleep)
reflect.TypeOf(a)
// time.Duration
这样就可以把sleep转化为time.Duration类型了。
所以最初的代码做如下改动就不会报错了。
sleep := time.Duration(int64(300))
time.Sleep(sleep*time.Second)