接口组合与多态

1. 接口组合

一个接口可以嵌入一个或多个接口,实现接口的复合。

type Reader interface {
    Read(p []byte) (n int, err error)
}

type Writer interface {
    Write(p []byte) (n int, err error)
}

type ReadWriter interface {
    Reader
    Writer
}

`

ReadWriter 组合了 ReaderWriter 的方法。

2. 多态

多态允许不同类型通过接口实现相同方法,实现统一调用。

type Speaker interface {
    Speak() string
}

type Dog struct{}
func (d Dog) Speak() string { return "Woof!" }

type Cat struct{}
func (c Cat) Speak() string { return "Meow!" }

func SaySomething(s Speaker) {
    fmt.Println(s.Speak())
}

SaySomething(Dog{})  // 输出:Woof!
SaySomething(Cat{})  // 输出:Meow!

3. 接口值的多态性

接口变量可以存储任何实现该接口的类型,实现动态调用。


接口组合和多态提升了代码的灵活性和扩展性。