Go小工具系列——重试机制
需求:如果一段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 协议》,转载必须注明作者和本文链接