在Go語言中,通過接口可以實現多態。接口是一種抽象類型,它定義了一組方法的簽名。任何類型只要實現了接口中定義的方法,就可以被看作是該接口的實現類型。
下面是一個示例,展示了如何在Go語言中實現多態:
package main
import "fmt"
// 定義一個接口
type Shape interface {
Area() float64
}
// 定義一個結構體,表示矩形
type Rectangle struct {
Width float64
Height float64
}
// 實現接口中的方法
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
// 定義一個結構體,表示圓形
type Circle struct {
Radius float64
}
// 實現接口中的方法
func (c Circle) Area() float64 {
return 3.14 * c.Radius * c.Radius
}
func main() {
// 創建一個矩形對象
rectangle := Rectangle{Width: 10, Height: 5}
// 創建一個圓形對象
circle := Circle{Radius: 5}
// 利用接口實現多態
shapes := []Shape{rectangle, circle}
// 遍歷shapes,調用不同類型的Area方法
for _, shape := range shapes {
fmt.Println(shape.Area())
}
}
在上面的示例中,我們定義了一個Shape
接口,并在Rectangle
和Circle
結構體中實現了該接口的方法。然后我們創建了一個shapes
切片,其中包含了一個矩形和一個圓形對象。接著,利用接口實現了多態,通過遍歷shapes
切片,調用不同類型的Area
方法。
輸出結果為:
50
78.5
可以看到,雖然shapes
切片中的元素類型不同,但是通過接口實現了多態,可以調用不同類型的方法。