go语言的继承和接口的“是”与”看起来是“

都说go语言的接口是整个go语言的核心,是的。

可以说go语言中的面相对象的特行都在接口中。接口定义了各种方法。接口是一种like a的思想。

继承是一种is a的思想。

举例:

type 猫 struct{

}

type 老虎 struct{

}

这就是继承,老虎继承了猫的所有特性,包括猫具有的方法。它是显性的表达出来了这种继承的特性。

但是接口不是,接口是隐性的在表达。

type 猫科 interface{

climbing()

run()

}

func (c 老虎) run(){...}

func(c 老虎) climbing(){...}

看到了吧,猫科这个结构体定义了两个方法,分别是climbing()和run(),但是老虎实现了这两种方法,既然老虎会爬会跑,很像猫科呀,所以这就是一种like a的方法。

所以可以var c 猫科=老虎{}

也可以在func sing(c 猫科)这样子的函数方法中:

var tiger 老虎{...}

func sing(tiger),为什么可以这样子,因为老虎看起来像猫科呀,所以凡是可以猫科作为接口变量的地方,都是拿老虎的结构体变量传入的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值