我希望實現fmt.Stringer
接口的String
方法。然而,對於衍生自Node
的一組類型,它們的String
實現將圍繞它們必須提供的接口方法進行包裝。我如何自動爲所有類型的Node
提供String
?如果我在某些基類上提供默認的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
}
Mostafa,這是我目前正在解決它。看到你找到同樣的解決方案真是令人振奮。 –
@MattJoiner那麼,這似乎是最合乎邏輯的,至少對我來說。很高興幫助。 – Mostafa