Go语言的接口(interface)是一种轻量级的多态性实现方式,是构建高扩展性、高复用性代码的利器。Go语言的接口非常灵活,不要求显式的实现声明,只要一个类型实现了接口规定的方法,它就可以被视为该接口的实现者。在本篇博客中,我们将通过多个实际示例,探讨Go语言接口的使用场景及实现方式。
接口基础
在Go中,接口是一组方法的集合,用于定义行为的约束。接口本身不能直接用于创建实例,而是用于描述一种能力或功能。定义一个接口的基本语法如下:
type 接口名 interface {
方法1(参数列表) 返回值
方法2(参数列表) 返回值
}
例如,下面的代码定义了一个Speaker
接口,包含一个Speak
方法:
type Speaker interface {
Speak() string
}
任何实现了Speak
方法的类型都自动满足了Speaker
接口的定义。
示例1:接口的基本实现
假设我们有两种类型的动物——Dog
和Cat
。这两种动物都可以“说话”,但它们的叫声不同。我们可以让它们都实现Speaker
接口:
type Dog struct{
}
func (d Dog) Speak() string {
return "Woof!"
}
type Cat struct{
}
func (c Cat) Speak() string {
return "Meow!"
}
接着,我们可以通过一个函数接受Speaker
接口类型的参数,从而实现多态:
func MakeSound(s Speaker) {
fmt.Println(s.Speak())
}</