当前位置: 技术文章>> go中的多态详细介绍与代码示例

文章标题:go中的多态详细介绍与代码示例
  • 文章分类: 后端
  • 10791 阅读
文章标签: go go基础

在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的方法。然后,我们实现了CircleRectangle两个结构体,并为它们分别定义了Area方法。这两个结构体都实现了Shape接口,因此它们都可以被赋值给Shape类型的变量。

main函数中,我们创建了一个包含不同形状的切片shapes,并将它们作为参数传递给Area方法。在循环中,我们通过调用每个形状的Area方法来计算它们的面积,并打印输出。由于我们使用了接口的多态性,程序可以处理任意实现了Shape接口的对象。


推荐文章