为了账号安全,请及时绑定邮箱和手机立即绑定

go语言中interface的实践

标签:
Go


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的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消