在Go語言中,接口多態是通過接口類型和實現了該接口的具體類型的組合來實現的。接口多態允許我們編寫更加靈活和可擴展的代碼,因為我們可以將不同的實現類型傳遞給相同的接口變量,而無需關心具體的實現細節。
要實現接口多態,需要遵循以下步驟:
type Shape interface {
Area() float64
}
type Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return math.Pi * 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.Println("Area:", s.Area())
}
func main() {
c := Circle{Radius: 5}
r := Rectangle{Width: 4, Height: 6}
PrintArea(c) // 輸出:Area: 78.53981633974483
PrintArea(r) // 輸出:Area: 24
}
在這個例子中,我們定義了一個名為Shape
的接口,它包含一個名為Area
的方法。然后,我們創建了兩個實現了Shape
接口的具體類型:Circle
和Rectangle
。最后,我們編寫了一個名為PrintArea
的函數,它接受一個Shape
類型的參數,并調用其Area
方法。在main
函數中,我們分別使用Circle
和Rectangle
類型的值調用PrintArea
函數,實現了接口多態。