在 Go 语言中,并没有像 Java 或 C++ 中的显式多态性概念,如类的继承和方法的重写(override)。然而,Go 通过接口(interface)和类型嵌入(embedding)实现了类似的多态行为。
接口实现多态
接口在 Go 中扮演了非常重要的角色,它们定义了一组方法的集合,任何类型只要实现了接口中定义的所有方法,就被认为是实现了该接口。这样,你可以通过接口类型的变量来引用实现了该接口的任何类型的值,从而实现多态性。
下面是一个简单的例子:
package main
import (
"fmt"
)
// 定义一个接口
type Shape interface {
Area() float64
}
// 圆形结构体
type Circle struct {
radius float64
}
// 圆形实现 Area 方法
func (c Circle) Area() float64 {
return 3.14 * c.radius * c.radius
}
// 矩形结构体
type Rectangle