对象:匿名接口、接口嵌入和行为

14 空接口

func main() {
    var e interface{} = 1
    println(e)
}

空接口没有任何声明,所以所有类型都实现该接口。类似object单根祖先类型。

空接口就是什么方法的声明都没有,意味着任何一个类型都能实现空接口。在其他语言里都有一个类似Object单根类型,什么类型都可以往里丢。

14 匿名接口

type X int

func (X) A() { println("a") }
func main() {
    var o X
    x.A()
    var e interface {
        A()
    } = o

    e.A()
}

定义一个接口e,匿名接口通常出现在一个局部片段。所谓的匿名接口的一种用法。基于某种原因,对X进行抽象。一般不直接改类型,因为它是全局的,重构时在局部范围内构建e接口,验证会不会出错,逐步构造完以后再把它提升为全局的。好处在于避免带来很大范围内的关联效应,把它控制在一个很小的范围内。

匿名接口用下面方式比较多,定义一个类型。类型里有A和B和组装另外一个C类型现在不知道怎么替换,可以定义接口,里面有方法X和Y类似这样,这样好处只要符合接口都可以放进来,当然也可以单独定义。

type Data struct {
    a int
    b int
    c interface {
        x()
        y()
    }
}

使用匿名接口的目的是根本不关心谁去实现,Logic只处理逻辑部分,从设计角度日志和逻辑不是同一个包,因为日志属

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值