golang 多态函数 多个输入参数 如何编写
时间: 2023-07-27 08:13:30 浏览: 235
Go语言实现类似c++中的多态功能实例
在 Go 中,可以通过使用接口和结构体来实现多态性。对于多个输入参数的函数,可以将它们作为结构体的字段,然后定义一个接口,该接口包含一个执行函数,该函数接收该结构体作为参数。
以下是一个示例代码:
```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}
fmt.Println("Rectangle area:", GetArea(r))
fmt.Println("Circle area:", GetArea(c))
}
```
在上面的示例中,我们定义了一个 `Shape` 接口和两个结构体 `Rectangle` 和 `Circle`,它们都实现了 `Area()` 方法。接着,我们定义了一个 `GetArea()` 函数,它接收一个 `Shape` 类型的参数,然后调用该参数的 `Area()` 方法来计算面积。
在 `main()` 函数中,我们创建了一个 `Rectangle` 和一个 `Circle` 实例,并将它们传递给 `GetArea()` 函数来计算它们各自的面积。
这样,我们就可以通过使用接口和结构体来实现多态性和多个输入参数的函数了。
阅读全文