golang 多态函数 多个参数
时间: 2023-07-27 14:13:30 浏览: 154
Golang 搭建 Web 聊天室
5星 · 资源好评率100%
在 Golang 中,可以使用接口和类型断言来实现多态函数。多个参数的多态函数可以通过将接口类型作为函数参数来实现。
下面是一个例子:
```go
type Shape interface {
area() float64
}
type Rectangle struct {
width float64
height float64
}
type Circle struct {
radius float64
}
func (r Rectangle) area() float64 {
return r.width * r.height
}
func (c Circle) area() float64 {
return math.Pi * c.radius * c.radius
}
func getArea(s Shape) float64 {
return s.area()
}
func main() {
r := Rectangle{width: 5, height: 10}
c := Circle{radius: 7.5}
fmt.Println("Rectangle area:", getArea(r))
fmt.Println("Circle area:", getArea(c))
}
```
在上述代码中,我们定义了一个 Shape 接口,它有一个 area 方法。然后我们定义了 Rectangle 和 Circle 两个类型,并给它们分别实现了 area 方法,这样它们就都实现了 Shape 接口。
接下来,我们定义了一个 getArea 函数,它接收一个 Shape 类型的参数,调用其 area 方法,并返回计算出的面积。
最后,在 main 函数中,我们创建了一个 Rectangle 和一个 Circle 实例,并分别调用 getArea 函数来计算它们的面积。
这样,我们就实现了一个多态函数,它可以接收不同类型的参数,并调用它们不同的方法。
阅读全文