为啥结果不是“222”,而是“111”??? 我是模仿第二个程序块写的,在最下面

lishuailw · · 2486 次点击
Stringer 和 error ,这俩接口的内部方法,只要是实例化了,都是内部自动调用吧?
#2
更多评论
按你的描述,你需要实现Stringer String() string接口就行了。 也就是把你的fangfa换成String() string
#1
你可以debug一下你模仿的那个程序,观察fmt.Println的执行流程。其内部会进行类型断言,判断出这是一个error类型的变量,然后就会调用其Error()方法来输出。因此,只要把fangfa()改成Error()就能输出222。同理,如果你传入的这个变量实现的是String()方法,fmt.Println就会判断这是一个实现了Stringer接口的类型,然后调用其String()方法来输出。
#3