在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/GO/ go中“errors”包代碼問題

go中“errors”包代碼問題

package main

import (
    "fmt"
)

type test interface {
    Error1() string
}

func New(name string) test {
    return &student{name}
}

type student struct {
    name string
}

func (s *student) Error1() string {
    fmt.Println("只有當(dāng)把Error1改成Error時(shí),這行才會(huì)打印") // 第21行
    return s.name
}

func main() {
    s := New("mike")
    fmt.Println("s = ", s)
    // fmt.Println("s = ", s.Error1()) // 如果不是Error需要手動(dòng)調(diào)用
}

我測(cè)試發(fā)現(xiàn)只有把代碼中兩處Error1改成單詞Error時(shí),第21行才會(huì)執(zhí)行打印,其他任何單詞都需要手動(dòng)調(diào)用實(shí)現(xiàn)的方法。這是為什么呢,go是怎么做的

回答
編輯回答
誮惜顏

找到在"fmt"包里,handleMethods方法中調(diào)用了p.fmtString(v.Error(), verb)

2018年7月11日 23:00