只要咱們的業務邏輯包含網絡交互,就必須考慮:若是請求失敗了,該怎麼處理?網絡
正常的狀況下,有兩種處理方式:函數
在代碼上進行抽象處理,咱們能夠歸納爲:code
// 函數只是用來舉例,自己是一個處理熔斷的包 type runFunc func() error type fallbackFunc func(error) error func Go(name string, run runFunc, fallback fallbackFunc) chan error { }
咱們執行函數run
,若是返回成功,則整個函數返回;若是函數run
執行失敗,則執行函數fallback
。string