继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

go语言中interface的实践

holdtom
关注TA
已关注
手记 1703
粉丝 240
获赞 991


package main

import (

    "fmt"

    "math"

)

type geometry interface {

    area() float64

    perim() float64

}

type square struct {

    width, height float64

}

type circle struct {

    radius float64

}

//要在go中实现一个接口,我们只需要实现接口中的所有方法

//`square`的实现,s接收者接受了area()方法

func (s square) area() float64 {

    return s.width * s.height

}

//`square`的实现,s接收者接受了perim()方法

func (s square) perim() float64 {

    return 2*s.width + 2*s.height

}

//`circle`的实现,c接收者接受了area()方法

func (c circle) area() float64 {

    return math.Pi * c.radius * c.radius

}

//`circle`的实现,c接收者接受了perim()方法

func (c circle) perim() float64 {

    return 2 * math.Pi * c.radius

}

//如果一个变量或者参数是接口类型,那么我们可以调用这个被命名的接口中的方法

func measure(g geometry)  {

    fmt.Println(g)

    fmt.Println(g.area())

    fmt.Println(g.perim())

}

func main()  {

    //定义并初始化square、circle struct,可以理解为结构体的实例?结构体的接收者?

    s := square{width: 3, height: 4}

    c := circle{radius: 5}

    measure(s)

    measure(c)

}

//output:

{3 4}

12

14

{5}

78.53981633974483

31.41592653589793

©著作权归作者所有:来自51CTO博客作者PowerMichael的原创作品,如需转载,请注明出处,否则将追究法律责任


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP