完整课程请点击以下链接
Go 语言项目开发实战_Go_实战_项目开发_孔令飞_Commit 规范_最佳实践_企业应用代码-极客时间
在Go语言中,虽然没有像其他面向对象语言(如Java或C++)中那样的显式的类继承和多态机制,但通过接口和方法的组合,可以实现类似多态的效果。
多态是指在不同的上下文中,同样的方法调用可以表现出不同的行为。在Go语言中,可以通过接口来实现多态。
下面是一个简单的示例,演示了如何在Go语言中实现多态:
goCopy code
package mainimport "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()
函数,分别传入了圆形对象和矩形对象,实现了不同的行为。
通过接口和方法的组合,可以很方便地实现多态的效果,在不同的上下文中实现相同的方法调用表现出不同的行为。