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("只有当把Error1改成Error时,这行才会打印") // 第21行
return s.name
}
func main() {
s := New("mike")
fmt.Println("s = ", s)
// fmt.Println("s = ", s.Error1()) // 如果不是Error需要手动调用
}
我测试发现只有把代码中两处Error1改成单词Error时,第21行才会执行打印,其他任何单词都需要手动调用实现的方法。这是为什么呢,go是怎么做的
找到在"fmt"包里,handleMethods方法中调用了
p.fmtString(v.Error(), verb)