第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 go 中鍵入斷言錯誤

在 go 中鍵入斷言錯誤

Go
白板的微信 2022-05-23 17:43:59
我正在制作一個小功能來檢查error某些類型并決定(取決于錯誤類型)某些重試是否值得。我創(chuàng)建了自己的temporary接口來鍵入斷言net/http實(shí)現(xiàn)此接口的所有錯誤(但是未導(dǎo)出,因此我也將其聲明為我的代碼)type temporary interface {    Temporary() bool}因此,我想在實(shí)現(xiàn)接口時出現(xiàn) net/http 錯誤時重試temporary,以防錯誤是以下類型之一io.EOF:io.ErrUnexpectedEOFErrTimeoutExceeded在哪里var ErrTimeoutExceeded = errors.New("timeout exceeded")但是下面的 switch 語句func isWorthRetrying(err error) bool {    switch e := err.(type) {    case temporary:        return true    case io.EOF:        return true    case io.ErrUnexpectedEOF:        return true    case ErrTimeoutExceeded:        return true    default:        return false    }}所有語句中都出現(xiàn)錯誤(斷言反對的一種類型除外temporary)有錯誤,例如io.EOF(類型錯誤)不是類型這是什么意思?
查看完整描述

1 回答

?
米脂

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個贊

在您的 switch 語句中,您正在檢查err.(type)一個type。valuesio.EOF和不是類型,它們是對象io.ErrUnexpectedEOF。ErrTimeoutExceeded您無法檢查類型是否為對象(不同的事物);但是,您可以檢查對象是否屬于某個類型。


您可以使用以下代碼檢查這兩種情況:


func isWorthRetrying(err error) bool {

        switch err.(type) {

        case temporary:

                return true

        default:

                switch err {

                case io.EOF:

                        return true

                case io.ErrUnexpectedEOF:

                        return true

                case ErrTimeoutExceeded:

                        return true

                default:

                        return false

                }

        }

}

編輯:感謝 Adrian 的評論,errors.Is如果您使用的是 Go 1.13+,我們還可以使用 new 編寫此函數(shù):


func isWorthRetrying(err error) bool {

        switch err.(type) {

        case temporary:

                return true

        default:

                return errors.Is(err, io.EOF) ||

                        errors.Is(err, io.ErrUnexpectedEOF) ||

                        errors.Is(err, ErrTimeoutExceeded)

        }

}


查看完整回答
反對 回復(fù) 2022-05-23
  • 1 回答
  • 0 關(guān)注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號