亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

golang interface多態實現的方法是什么

小億
93
2024-01-10 09:50:48
欄目: 編程語言

在Go語言中,接口(interface)可以實現多態性。多態性是指不同的類型可以表現出相同的行為。

要實現多態性,需要定義一個接口,并在不同的類型中實現該接口。然后,可以通過接口類型的變量來調用實現了接口的方法,從而實現多態性。

以下是實現多態性的方法:

  1. 定義接口:首先需要定義一個接口,并在接口中聲明需要實現的方法。
type Shape interface {
    Area() float64
    Perimeter() float64
}
  1. 實現接口:在不同的類型中實現接口,并提供方法的具體實現。
type Rect struct {
    width  float64
    height float64
}

func (r Rect) Area() float64 {
    return r.width * r.height
}

func (r Rect) Perimeter() float64 {
    return 2 * (r.width + r.height)
}

type Circle struct {
    radius float64
}

func (c Circle) Area() float64 {
    return math.Pi * c.radius * c.radius
}

func (c Circle) Perimeter() float64 {
    return 2 * math.Pi * c.radius
}
  1. 使用多態性:通過接口類型的變量來調用實現了接口的方法。
func printShapeInfo(s Shape) {
    fmt.Println("Area:", s.Area())
    fmt.Println("Perimeter:", s.Perimeter())
}

func main() {
    rect := Rect{width: 5, height: 3}
    circle := Circle{radius: 2}

    printShapeInfo(rect)
    printShapeInfo(circle)
}

在上面的示例中,Shape接口定義了兩個方法Area()Perimeter()。然后,RectCircle結構體分別實現了Shape接口,并提供了這兩個方法的具體實現。

main函數中,我們創建了一個Rect類型的變量rect和一個Circle類型的變量circle。然后,我們調用printShapeInfo函數,傳入rectcircle,實現了多態性。printShapeInfo函數中的參數類型為Shape接口,因此可以傳入任何實現了Shape接口的類型,并調用對應的方法。

最終,輸出結果是RectCircle的面積和周長。這說明通過接口實現了多態性,不同類型的變量可以表現出相同的行為。

0
航空| 盐亭县| 贡嘎县| 正阳县| 钟祥市| 都安| 陵川县| 深圳市| 宜川县| 尚义县| 麟游县| 张北县| 铜川市| 雷山县| 从化市| 宜兴市| 廊坊市| 富源县| 英山县| 上饶县| 龙州县| 中牟县| 九龙坡区| 蒙城县| 中宁县| 乐清市| 辽宁省| 梅州市| 噶尔县| 池州市| 玉山县| 夏邑县| 丹寨县| 比如县| 玛沁县| 延川县| 武威市| 日喀则市| 南涧| 牟定县| 瑞丽市|