Go小工具系列——重試機制

ConnorK 發表於 2021-03-25
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 協議》,轉載必須註明作者和本文連結