go語言中interface的實踐

package main

import (
    "fmt"
    "math"
)

type geometry interface {
    area() float64
    perim() float64
}

type square struct {
    width, height float64
}

type circle struct {
    radius float64
}

//要在go中實現(xiàn)一個接口,我們只需要實現(xiàn)接口中的所有方法

//`square`的實現(xiàn),s接收者接受了area()方法
func (s square) area() float64 {
    return s.width * s.height

}

//`square`的實現(xiàn),s接收者接受了perim()方法
func (s square) perim() float64 {
    return 2*s.width + 2*s.height

}

//`circle`的實現(xiàn),c接收者接受了area()方法
func (c circle) area() float64 {
    return math.Pi * c.radius * c.radius

}

//`circle`的實現(xiàn),c接收者接受了perim()方法
func (c circle) perim() float64 {
    return 2 * math.Pi * c.radius

}

//如果一個變量或者參數(shù)是接口類型,那么我們可以調(diào)用這個被命名的接口中的方法
func measure(g geometry)  {
    fmt.Println(g)
    fmt.Println(g.area())
    fmt.Println(g.perim())

}

func main()  {

    //定義并初始化square、circle struct,可以理解為結(jié)構(gòu)體的實例?結(jié)構(gòu)體的接收者?
    s := square{width: 3, height: 4}
    c := circle{radius: 5}

    measure(s)
    measure(c)
}

//output:
{3 4}
12
14
{5}
78.53981633974483
31.41592653589793

新聞標(biāo)題:go語言中interface的實踐
轉(zhuǎn)載源于:http://bm7419.com/article38/jdippp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、自適應(yīng)網(wǎng)站ChatGPT、電子商務(wù)、網(wǎng)頁設(shè)計公司網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管