go语言之类型与接口的关系

go语言的类型和接口的之间是一对多(或多对一)的关系
以下为概念实例生产理解,便于以后在复杂的类型与接口环境中使用

一,一个类型可以实现多个接口 而接口间彼此独立,不知道对方的实现。

type HandlerInterface interface {
   OnRequset()
   IsRequestOk() bool
}

type Test2 struct{//... 
} 

type Test struct{
   ID int     //普通结构
 
   start()string    //接口函数
   HandlerInterface //接口函数
 
   Test2    //结构嵌套
} 

func NewTest()*Test{//...
  return &Test{}
}

func(t *Test)OnRequset{//...
}

func(t *Test)IsRequestOk{//...
}

二,一个接口可以有多个结构实现

一个接口的方法,不一定需要由一个类型完全实现,
接口的方法可以通过在类型中嵌入其他类型或者结构体来实现。
也就是说,使用者并不关心某个接口的方法是通过一个类型完全实现的,
还是通过多个结构嵌入到一个结构体中拼凑起来共同实现的。
//老司机开车  这个接口函数可不是一个结构体完成的

type Car interface {
    Start()    // 开启
    close()string // 关闭
}
// 熄火
type Close struct {//...
}
// 实现Car 的close()方法
func (c *Close) close()string {//...
}
// 人为
type People struct {
    Close  // 嵌入日志器
}
// 实现Car的Start()方法
func (p *People) Start() {//...
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值