91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
巩义市| 永年县| 宁海县| 三台县| 木里| 威信县| 北流市| 沭阳县| 侯马市| 错那县| 繁峙县| 固始县| 安国市| 平南县| 平安县| 德兴市| 炎陵县| 永平县| 炉霍县| 岗巴县| 黑水县| 曲靖市| 望谟县| 贺兰县| 银川市| 金阳县| 安溪县| 正蓝旗| 中超| 纳雍县| 大城县| 玛曲县| 巩义市| 永和县| 电白县| 邯郸县| 兴山县| 门源| 新巴尔虎右旗| 丁青县| 亚东县|