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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

TypeOf 與 Comparable 錯(cuò)誤。是

TypeOf 與 Comparable 錯(cuò)誤。是

Go
catspeake 2022-10-24 16:29:31
我正在學(xué)習(xí) Go 中的錯(cuò)誤比較是如何工作的,并發(fā)現(xiàn)了一些我無法理解的東西。函數(shù)errors.Is(err, target error)檢查目標(biāo)是否可比較。func Is(err, target error) bool {    if target == nil {        return err == target    }    isComparable := reflectlite.TypeOf(target).Comparable()    for {        if isComparable && err == target {            return true        }資源鑒于 Go 中的所有接口都是可比較的并且error是一個(gè)接口,這個(gè)調(diào)用處理哪種情況?
查看完整描述

1 回答

?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

接口值是可比較的,但比較可能會(huì)在運(yùn)行時(shí)出現(xiàn)混亂。規(guī)范說:

如果該類型的值不可比較,則比較具有相同動(dòng)態(tài)類型的兩個(gè)接口值會(huì)導(dǎo)致運(yùn)行時(shí)恐慌。

當(dāng)目標(biāo)的具體類型不可比較時(shí),該檢查通過跳過比較來防止恐慌。

這是一個(gè)例子:

type E []byte

func (e E) Error() string { return string(e) }

func (e E) Is(target error) bool {

    t, ok := target.(E)

    return ok && bytes.Equal(e, t)

}


var a error = E{}

var b error = E{}

fmt.Println(errors.Is(a, b)) // prints true

fmt.Println(a == b)          // panics because slices are not comparable


查看完整回答
反對(duì) 回復(fù) 2022-10-24
  • 1 回答
  • 0 關(guān)注
  • 145 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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