• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go:interface(接口)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1. 定义

  接口定义了一组抽象方法(方法集);

  接口中不能定义变量;

type Namer interface {
    Method1(param_list) return_type
    Method2(param_list) return_type
    ...
}

  永远不要使用一个指针指向一个接口类型,因为它已经是一个指针

1.1 接口名称

  1. 一般以方法名加 [e]r 后缀结尾,比如 Printer、Reader、Writer、Logger;

  2. 以 able 后缀结尾,如 Closeable、Cloneable;

  3. 以 I 开头(大写的i);

1.2 接口方法

  一般接口中的方法比较少,0-3个;

2. 接口类型

  go 中的接口一般有两种,一种是包含方法定义的接口,一种是不包含方法定义的空接口;

  go 语言实现时用两种结构体表示不同的接口,iface 结构体表示包含方法定义的接口,eface 结构体表示空接口;

3. 接口实现方式

  在Java中,实现 接口时通过 implements  接口名 来显示实现接口,并在实现类中实现接口的所有方法;

  在 go 中,接口都是隐式实现的,实现类只需要实现接口中的全部方法就隐式实现了这个接口;

3.1 接口方法的实现和调用

  接口的方法定义中没有限制方法的接收者为结构体还是结构体指针,接收者类型两者都可以,只能二选一;

  根据方法接收者类型和方法传入的参数情况,有以下几种情况:

  

 

  接收者类型和传入参数类型相同时编译通过理所当然,下面讨论一下两种类型不同的情况;   

  1. 当接收者类型为结构体时,传入结构体指针编译通过,指针编译通过是因为指针通过解引用可以得到引用指向的结构体;

  2. 当接收者类型为结构体指针时,传入结构体编译不通过,因为通过结构体不能找到唯一确定的结构体指向的指针,(纯属瞎猜,这里有答案,没看懂,手动狗头)

4. 接口嵌套

  类似Java中的接口继承;

  一个接口可以包含一个或者多个其他类型的接口,此时相当于该接口也定义了内嵌接口的方法;

  比如接口 File包含了ReadWrite 和 Lock 的所有方法,它还额外有一个 Close() 方法。

type ReadWrite interface {
    Read(b Buffer) bool
    Write(b Buffer) bool
}

type Lock interface {
    Lock()
    Unlock()
}

type File interface {
    ReadWrite
    Lock
    Close()
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Gin]运行模式检测和设置(mode.go)发布时间:2022-07-10
下一篇:
Go学习笔记(三)Go语言学习发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap