主题
接口组合与多态
1. 接口组合
一个接口可以嵌入一个或多个接口,实现接口的复合。
go
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
组合了 Reader
和 Writer
的方法。
2. 多态
多态允许不同类型通过接口实现相同方法,实现统一调用。
go
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. 接口值的多态性
接口变量可以存储任何实现该接口的类型,实现动态调用。
接口组合和多态提升了代码的灵活性和扩展性。