下面是简化的Go代码。
如您所见,它写了两次String()
,有什么办法只写一次?
type A struct {
Name string
}
func (u A) String() string {
out,err := json.MarshalIndent(u,"","\t")
return fmt.Sprintf("A:\n" + string(out))
}
type B struct {
Name string
}
func (u B) String() string {
out,"\t")
return fmt.Sprintf("B:\n" + string(out))
}
类似于实现struct Base
,它具有方法did()
,
然后struct A
和struct B
实现struct Base
,因此他们可以调用did()
,而无需再次实现did()
本身。
==============
编辑:
以前的示例代码不是很清楚,现在我进行了更改。
struct A
和struct B
具有不同的字段,我们如何只写一次String()
,然后应用于两个结构?
type A struct {
Name string
Status string
}
func (u A) String() string {
out,"\t")
return fmt.Sprintf("A:\n" + string(out))
}
type B struct {
ID int
Logo string
}
func (u B) String() string {
out,"\t")
return fmt.Sprintf("B:\n" + string(out))
}