您好,登錄后才能下訂單哦!
今天小編給大家分享一下Go語言time包數字與時間相乘的問題怎么解決的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
10 * time.Second //正常數字相乘沒錯
但是
package main import "time" func main(){ connectTimeout := 10 time.Sleep(time.Second*connectTimeout) }
這樣使用會報錯
int and time.Duration are different types. You need to convert the int to a time.Duration
原因:因為類型不匹配,time.Duration類型 不能直接和 int類型相乘,需要先將變量轉換為time.Duration
解決方式:time.Duration(int變量))
要將整數個單位轉換為持續時間
seconds := 10 ctx, cancel := context.WithTimeout(context.Background(), time.Duration(seconds) * time.Second) //ctx, cancel := context.WithCancel(context.Background()) defer cancel()
// Common durations. There is no definition for units of Day or larger // to avoid confusion across daylight savings time zone transitions. // // To count the number of units in a Duration, divide: // second := time.Second // fmt.Print(int64(second/time.Millisecond)) // prints 1000 // // To convert an integer number of units to a Duration, multiply: // seconds := 10 // fmt.Print(time.Duration(seconds)*time.Second) // prints 10s
Golang:如何將int轉換為time.duration?
參考URL: https://ask.csdn.net/questions/1037457
golang time.Duration 自定義變量報錯解決
參考文末介紹。
下面看下:golang time.Duration 自定義變量報錯解決
對于time.Duration類型,如果采用 time.Duration類型 * int變量 會報錯,而直接和數字相乘則不會出現;
具體是為什么呢?怎么解決呢?
錯誤:Invalid operation: time.Millisecond * idcTimeOut (mismatched types Duration and int64)
原因:因為類型不匹配,time.Duration類型 不能直接和 int類型相乘,需要先將變量轉換為time.Duration
解決方式:time.Duration(int變量))
代碼如下:
idc := getIdc() var idcTimeOut int64 if _, ok := IdcTimeout[idc]; ok { idcTimeOut = IdcTimeout[idc] } else { idcTimeOut = AllTimeout } //錯誤寫法 time.After(time.Millisecond * idcTimeOut //正確寫法 time.After(time.Millisecond * time.Duration(idcTimeOut))
以上就是“Go語言time包數字與時間相乘的問題怎么解決”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。