需求:如果一段code我們希望執行失敗的情況下重試幾次再丟擲錯誤,在go中如何實現呢?
//重試,限制次數
func Retry(tryTimes int, sleep time.Duration, callback func() (map[string]interface{}, error)) map[string]interface{} {
for i := 1; i <= tryTimes; i++ {
ret, err := callback()
if err == nil {
return ret
}
if i == tryTimes {
panic(fmt.Sprintf("error info: %s", err.Error()))
return nil
}
time.Sleep(sleep)
}
return nil
}
使用
// 最多重試3次,每次間隔1秒
Retry(3, 1*time.Second, obj.Run)
本作品採用《CC 協議》,轉載必須註明作者和本文連結