Closed Laevon closed 1 month ago
看本仓库的chapter5/sources/dumpinterface.go。这里面dumpEface会判断i.type,如果是T类型,则调用dumpT,而后者实现如下:
func dumpT(dataOfIface unsafe.Pointer) {
var p *T = (*T)(dataOfIface)
fmt.Printf("\t data: %+v\n", *p)
}
是这里的Printf会调用T的Error函数返回bad error。
看本仓库的chapter5/sources/dumpinterface.go。这里面dumpEface会判断i.type,如果是T类型,则调用dumpT,而后者实现如下:
func dumpT(dataOfIface unsafe.Pointer) { var p *T = (*T)(dataOfIface) fmt.Printf("\t data: %+v\n", *p) }
是这里的Printf会调用T的Error函数返回bad error。
谢谢您如此及时的回复!
2023年10月版本,示例:
为什么在调用dumpEface(eif)后,eif的data值为bad error而不是5呢,空接口赋值为T类型值5时,也会隐式调用Error方法吗?