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

溫馨提示×

Go語言接口怎樣定義

小樊
82
2024-11-08 13:23:16
欄目: 編程語言

在Go語言中,接口(interface)是一種類型,它規定了一組方法簽名,但它不會實現這些方法。接口類型的變量可以保存任何實現了這些方法的值。接口的定義以關鍵字interface開始,后跟接口名稱和一組方法聲明。方法聲明包括方法名、參數列表和返回值列表。方法名在接口中必須唯一。

以下是一個簡單的Go語言接口定義示例:

package main

import "fmt"

// 定義一個名為Shape的接口,包含兩個方法:Area和Perimeter
type Shape interface {
    Area() float64
    Perimeter() float64
}

// 定義一個名為Circle的結構體,表示一個圓形
type Circle struct {
    Radius float64
}

// 為Circle結構體實現Shape接口的Area方法
func (c Circle) Area() float64 {
    return 3.14 * c.Radius * c.Radius
}

// 為Circle結構體實現Shape接口的Perimeter方法
func (c Circle) Perimeter() float64 {
    return 2 * 3.14 * c.Radius
}

// 定義一個名為Rectangle的結構體,表示一個矩形
type Rectangle struct {
    Width, Height float64
}

// 為Rectangle結構體實現Shape接口的Area方法
func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

// 為Rectangle結構體實現Shape接口的Perimeter方法
func (r Rectangle) Perimeter() float64 {
    return 2 * (r.Width + r.Height)
}

// 定義一個名為PrintAreaAndPerimeter的函數,接受一個Shape接口類型的參數
func PrintAreaAndPerimeter(s Shape) {
    fmt.Printf("Area: %v\n", s.Area())
    fmt.Printf("Perimeter: %v\n", s.Perimeter())
}

func main() {
    c := Circle{Radius: 5}
    r := Rectangle{Width: 3, Height: 4}

    // 由于Circle和Rectangle都實現了Shape接口,它們都可以傳遞給PrintAreaAndPerimeter函數
    PrintAreaAndPerimeter(c)
    PrintAreaAndPerimeter(r)
}

在這個示例中,我們定義了一個名為Shape的接口,包含兩個方法:Area()Perimeter()。然后,我們定義了兩個結構體:CircleRectangle,并為它們分別實現了Shape接口的方法。最后,我們定義了一個名為PrintAreaAndPerimeter的函數,該函數接受一個Shape接口類型的參數,并打印出輸入形狀的面積和周長。在main函數中,我們創建了一個圓形和一個矩形的實例,并將它們傳遞給PrintAreaAndPerimeter函數。

0
鹤山市| 泸定县| 武宁县| 久治县| 乌拉特前旗| 邢台市| 五寨县| 刚察县| 白水县| 松江区| 句容市| 克拉玛依市| 云阳县| 开鲁县| 伊川县| 湟中县| 朝阳县| 崇州市| 泸西县| 依安县| 灵宝市| 红原县| 三都| 宁晋县| 宿州市| 罗定市| 彝良县| 武夷山市| 修水县| 梓潼县| 从化市| 醴陵市| 徐汇区| 原平市| 环江| 南澳县| 象山县| 阿图什市| 阳春市| 扎赉特旗| 黑水县|