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

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

困惑:在 Go 中實(shí)現(xiàn)多個(gè)接口

困惑:在 Go 中實(shí)現(xiàn)多個(gè)接口

Go
繁星淼淼 2022-01-10 10:56:01
在下面的代碼中,類(lèi)型ErrNegativeSqrt實(shí)現(xiàn)了Stringer和error接口。由于在Sqrt方法中返回類(lèi)型是fmt.Stringer,我會(huì)除了執(zhí)行結(jié)果是:0 無(wú)0 Impl 縱梁類(lèi)型但實(shí)際結(jié)果如下,為什么呢?0 無(wú)0 Impl 錯(cuò)誤類(lèi)型package mainimport (    "fmt")type ErrNegativeSqrt float64func Sqrt(x ErrNegativeSqrt) (float64, fmt.Stringer) {    if x < 0 {        return 0, ErrNegativeSqrt(x)    }    return 0, nil}func (e ErrNegativeSqrt) String() string {    return "Impl Stringer type"}func (e ErrNegativeSqrt) Error() string {    return "Impl error type"}func main() {    fmt.Println(Sqrt(2))    fmt.Println(Sqrt(-2))}
查看完整描述

2 回答

?
隔江千里

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

Packagefmt文檔指出:

...特殊格式考慮適用于實(shí)現(xiàn)某些接口的操作數(shù)。按申請(qǐng)順序:

...

  1. 如果 %v 動(dòng)詞與 # 標(biāo)志 (%#v) 一起使用并且操作數(shù)實(shí)現(xiàn)了 GoStringer 接口,則會(huì)調(diào)用該接口。

如果格式(對(duì)于 Println 等隱含 %v)對(duì)字符串(%s %q %v %x %X)有效,則適用以下兩條規(guī)則:

  1. 如果操作數(shù)實(shí)現(xiàn)了錯(cuò)誤接口,則會(huì)調(diào)用 Error 方法...

  2. 如果操作數(shù)實(shí)現(xiàn)方法 String() 字符串,則將調(diào)用該方法...

由于您使用fmt.Println,第4和第5開(kāi)始發(fā)揮作用,它更喜歡稱(chēng)Error()String()


查看完整回答
反對(duì) 回復(fù) 2022-01-10
?
慕田峪4524236

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

你忽略了你的函數(shù)返回的事實(shí)fmt.Stringer將所得的值傳遞給fmt.Println作為interface{}

您看到該Error()方法的結(jié)果只是因?yàn)?code>fmt包在檢查error接口之前檢查了fmt.Stringer接口。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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