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

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

擴(kuò)展錯(cuò)誤結(jié)構(gòu),但遇到類(lèi)型“*MyError”同時(shí)具有名為“錯(cuò)誤”的字段和方法

擴(kuò)展錯(cuò)誤結(jié)構(gòu),但遇到類(lèi)型“*MyError”同時(shí)具有名為“錯(cuò)誤”的字段和方法

Go
精慕HU 2022-11-23 19:19:19
我來(lái)自爪哇。我正在使用一個(gè)已經(jīng)定義了Errorinerrs包的框架,我想擴(kuò)展它以便我可以向它添加更多字段。所以我嘗試使用go的繼承。// Error to inherit from errs.Errortype MyError struct {    errs.Error    ErrDetail string    //more message to my error    st        []uintptr }// override Error() so that the message can be more specificfunc (e *MyError) Error() string {    if e == nil {        return ErrorCodeSuccess.ErrDetail    }    return fmt.Sprintf("Code:%d, ErrDetail:%s, Msg:%s", e.GetCode(), e.GetErrDetail(), e.GetMsg())} 這對(duì)于 Java 程序員來(lái)說(shuō)非常簡(jiǎn)單。但我明白了 Type '*MyError' has both field and method named 'Error'.這非常令人沮喪,因?yàn)榉椒?Error 是在內(nèi)置包中Error定義的,而名稱(chēng)是在我的框架中定義的,有沒(méi)有解決這個(gè)問(wèn)題的解決方法?
查看完整描述

1 回答

?
泛舟湖上清波郎朗

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

您可以使用類(lèi)型別名:


type SDKErr = errs.Error


// Error to inherit from errs.Error

type MyError struct {

    SDKErr

    ErrDetail string    //more message to my error

    st        []uintptr 

}


func (e *MyError) Error() string {

    // ...

現(xiàn)在嵌入字段的名字是SDKErr,但是不會(huì)和方法名沖突,errs.Error不需要轉(zhuǎn)換就可以用在任何需要的地方。


游樂(lè)場(chǎng):https ://go.dev/play/p/XSWi5hzHGPh


當(dāng)然你也可以使用命名字段,而不是別名:


type MyError struct {

    SDKErr errs.Error

    ErrDetail string    //more message to my error

    st        []uintptr 

}

然后調(diào)用errs.Errorsimply like的方法e.SDKErr.GetCode()。但是MyError,例如,如果要序列化為 JSON,則字段errs.Error將顯示為嵌套對(duì)象,而使用類(lèi)型別名時(shí),它們將被“扁平化”。


基本上如果errs.Error被定義為:


type Error struct {

    Code int

}

使用類(lèi)型別名和嵌入字段,JSON 看起來(lái)像:


{"Code":0,"ErrDetail":""}

與命名字段:


{"SDKErr":{"Code":0},"ErrDetail":""}


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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