完整课程请点击以下链接
Go 语言项目开发实战_Go_实战_项目开发_孔令飞_Commit 规范_最佳实践_企业应用代码-极客时间
在Go语言中,虽然没有像其他面向对象语言(如Java或C++)中那样的显式的类继承和多态机制,但通过接口和方法的组合,可以实现类似多态的效果。
多态是指在不同的上下文中,同样的方法调用可以表现出不同的行为。在Go语言中,可以通过接口来实现多态。
下面是一个简单的示例,演示了如何在Go语言中实现多态:
goCopy code
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 PrintArea(s Shape) {
fmt.Printf("Area: %f\n", s.Area())
}
func main() {
// 创建一个圆形对象
circle := Circle{Radius: 5}
// 创建一个矩形对象
rectangle := Rectangle{Width: 4, Height: 3}
// 使用多态,调用打印面积的函数,传入不同的图形对象
PrintArea(circle)
PrintArea(rectangle)
}
在上面的示例中,Shape
是一个接口,定义了一个方法Area()
。Circle
和Rectangle
分别是圆形和矩形的结构体,它们都实现了Shape
接口的Area()
方法。在main()
函数中,通过多态的方式,调用了PrintArea()
函数,分别传入了圆形对象和矩形对象,实现了不同的行为。
通过接口和方法的组合,可以很方便地实现多态的效果,在不同的上下文中实现相同的方法调用表现出不同的行为。