我希望实现fmt.Stringer
接口的String
方法。但是,对于从 派生的一组类型Node
,它们的String
实现将是围绕Print
它们必须提供的接口方法的包装器。如何String
自动提供所有类型的实现Node
?如果我String
在某些基类上提供默认值,我将无法访问派生类型(以及接口方法Print
)。
type Node interface {
fmt.Stringer
Print(NodePrinter)
}
type NodeBase struct{}
func (NodeBase) String() string {
np := NewNodePrinter()
// somehow call derived type passing the NodePrinter
return np.Contents()
}
type NodeChild struct {
NodeBase
// other stuff
}
func (NodeChild) Print(NodePrinter) {
// code that prints self to node printer
}