我希望实现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
}
ABOUTYOU
相关分类