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

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

Golang:接口方法在哪里調(diào)用?

Golang:接口方法在哪里調(diào)用?

Go
暮色呼如 2021-11-29 15:55:16
我不明白在哪一點(diǎn)調(diào)用接口方法。我正在查看Go Tour中的以下示例:package mainimport "fmt"type Person struct {    Name string    Age  int}func (p Person) String() string {    return fmt.Sprintf("%v (%v years)", p.Name, p.Age)}func main() {    a := Person{"Arthur Dent", 42}    z := Person{"Zaphod Beeblebrox", 9001}    fmt.Println(a, z)}問題:我知道func (p Person)接收String()方法并返回string我想要顯示的。但是fmt.Printlninmain()方法必須String()在某個(gè)時(shí)候調(diào)用,對嗎?我查看了fmtin godoc的來源,但我仍然無法弄清楚!另一個(gè)例子:如果我添加我自己的接口,讓我們說Stringer2一個(gè)調(diào)用的方法String2(),然后創(chuàng)建一個(gè)func (p Person) String2() {....}. 如何String()被執(zhí)行fmt.Println,但String2()不執(zhí)行?
查看完整描述

2 回答

?
梵蒂岡之花

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

該值傳遞給Println作為interface{},并檢查它是否滿足fmt.Stringer通過一個(gè)接口“類型斷言”通常以的形式“型開關(guān)”。


func IsStringer(i interface{}) {

    switch s := i.(type) {

    case fmt.Stringer:

        fmt.Println("Person a has a String() method")

        fmt.Println(s.String())

    default:

        fmt.Println("not a stringer")

    }


    // OR for a single type


    if s, ok := i.(fmt.Stringer); ok {

        fmt.Println("Person a has a String() method")

        fmt.Println(s.String())

    }

}

但是,從fmt包裝中打印時(shí),其他方法可能優(yōu)先。首先檢查fmt.Formatter, fmt.GoStringer, error, 最后檢查fmt.Stringer。


查看完整回答
反對 回復(fù) 2021-11-29
?
GCT1015

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

fmt包與它定義的接口工作,在這種情況下Stringer。它不知道您定義的接口,因此String2()即使您將滿足該Stringer2接口的類型傳遞給它,它也不知道調(diào)用。

接口是一種在類型之間具有共同行為的方式。因此,如果您創(chuàng)建一個(gè)函數(shù)Foo(s Stringer2),F(xiàn)oo 可以簡單地調(diào)用s.String2()確信傳入它的任何內(nèi)容都將具有該函數(shù)String2()。

更深入一點(diǎn),fmt.Println獲取interface{}類型,然后使用反射來檢查給定的參數(shù)是否滿足Stringer接口,然后調(diào)用String().

有道理?


查看完整回答
反對 回復(fù) 2021-11-29
  • 2 回答
  • 0 關(guān)注
  • 230 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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