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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!