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("只有当把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是怎么做的

阅读 1.8k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题