在Go语言中,多态(Polymorphism)是指通过接口实现多个具体类型的行为。它是一种在运行时根据对象的实际类型来执行相应的方法的机制。
在Go语言中,接口是一种隐式的多态类型,它允许我们将实现该接口的任意类型的对象赋值给该接口类型的变量。通过接口,我们可以定义并使用具有相同行为的不同类型的对象。
下面是一个简单的示例代码,展示了Go语言中的多态实现:
package main
import "fmt"
type Shape interface { Area() float64 }
type Circle struct { radius float64 }
func (c Circle) Area() float64 { return 3.14 * c.radius * c.radius }
type Rectangle struct { width, height float64 }
func (r Rectangle) Area() float64 { return r.width * r.height }
func main() { shapes := []Shape{ Circle{radius: 2.0}, Rectangle{width: 3.0, height: 4.0}, Circle{radius: 1.5}, }
for _, shape := range shapes { fmt.Println("Area:", shape.Area()) } }
在上面的代码中,我们定义了一个Shape
接口,它包含了一个名为Area
的方法。然后,我们实现了Circle
和Rectangle
两个结构体,并为它们分别定义了Area
方法。这两个结构体都实现了Shape
接口,因此它们都可以被赋值给Shape
类型的变量。
在main
函数中,我们创建了一个包含不同形状的切片shapes
,并将它们作为参数传递给Area
方法。在循环中,我们通过调用每个形状的Area
方法来计算它们的面积,并打印输出。由于我们使用了接口的多态性,程序可以处理任意实现了Shape
接口的对象。