碰到一個Golang time.Duration的問題,編譯的時候總是報
`time.Second*connectTimeout(mismatched types time.Durationandint)`
問題重現:
~~~
package main
import "time"
func main(){
connectTimeout := 10
time.Sleep(time.Second * connectTimeout)
}
~~~
解決的方法:
~~~
connectTimeout := 10
time.Sleep(time.Duration(connectTimeout) * time.Second)
~~~
產生這個問題的原因是:
> int and time.Duration are different types. You need to convert the int to a time.Duration
Golang的和時間相關的可以直接用數字,但不能是float浮點型,也不能直接是數值型變量.
~~~
time.Sleep(1 * time.Second) //可以
time.Sleep(1.1 * time.Second) //不可以
time.Sleep(time.Duration(yourTime) * time.Second) //可以
time.Sleep(yourTime * time.Second) //不可以
~~~