编辑:
如何不在Go中重复我的代码?
type Animal interface { Kingdom() string Phylum() string Family() string } type Wolf struct {} type Tiger struct {} func (w Wolf) Kingdom() string {return "Animalia"} func (w Wolf) Phylum() string {return "Chordata"} func (w Wolf) Family() string {return "Canidae"}
我为Wolf类型实现了三种方法,我需要实现Tiger类型的所有方法来实现接口.但是这两种类型的Kingdom和Phylum方法都是相同的.是否有可能只为Tiger类型实现Family方法:
func (t Tiger) Family() string {return "Felidae"}
而不是为每种类型重复所有三种方法?
放弃
请不要混淆方法中的简单字符串返回,在实际情况下,我需要不同的方法实现,而不仅仅是预定义的值.使用这种愚蠢的风格,我想避免玷污你的大脑.所以跳过方法根本不是.谢谢
这是经典的作文:
type Wolf struct { Animalia Chordata Canidae } type Tiger struct { Animalia Chordata Felidae } type Animalia struct{} func (Animalia) Kingdom() string { return "Animalia" } type Chordata struct{} func (Chordata) Phylum() string { return "Chordata" } type Canidae struct{} func (Canidae) Family() string { return "Canidae" } type Felidae struct{} func (Felidae) Family() string { return "Felidae" } func main() { w := Wolf{} t := Tiger{} fmt.Println(w.Kingdom(),w.Phylum(),w.Family()) fmt.Println(t.Kingdom(),t.Phylum(),t.Family()) }