中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
海城市| 左云县| 滦平县| 苍梧县| 寿阳县| 杭州市| 平阳县| 确山县| 商丘市| 塔河县| 新巴尔虎右旗| 思南县| 类乌齐县| 星座| 平远县| 巢湖市| 乌苏市| 九龙坡区| 巩义市| 南安市| 凤冈县| 冀州市| 黎川县| 承德市| 松阳县| 万宁市| 大埔区| 勃利县| 双鸭山市| 汤阴县| 金乡县| 清水河县| 珲春市| 舞阳县| 四平市| 河西区| 武乡县| 华坪县| 台山市| 溧水县| 丰台区|