go语言接口之接口类型

接口类型具体描述了一系列方法的集合,一个实现了这些方法的具体类型是这个接口类型的 实例。

io.Writer类型是用的最广泛的接口之一,因为它提供了所有的类型写入bytes的抽象,包括文 件类型,内存缓冲区,网络链接,HTTP客户端,压缩工具,哈希等等。io包中定义了很多其 它有用的接口类型。Reader可以代表任意可以读取bytes的类型,Closer可以是任意可以关闭 的值,例如一个文件或是网络链接。

复制代码
package io
type Reader interface {
    Read(p []byte) (n int, err error)
}
type Closer interface {
    Close() error
}

再往下看,我们发现有些新的接口类型通过组合已经有的接口来定义。下面是两个例子:

复制代码
type ReadWriter interface {
    Reader
    Writer
}
type ReadWriteCloser interface {
    Reader
    Writer
    Closer
}

上面用到的语法和结构内嵌相似,我们可以用这种方式以一个简写命名另一个接口,而不用声明它所有的方法。这种方式本称为接口内嵌,我们可以像下面这样,不使用内嵌来声明io.Writer接口。

复制代码
type ReadWriter interface {
    Read(p []byte) (n int, err error)
    Write(p []byte) (n int, err error)
}

或者甚至使用种混合的风格:

复制代码
type ReadWriter interface {
    Read(p []byte) (n int, err error)
    Writer
}

上面3种定义方式都是一样的效果。方法的顺序变化也没有影响,唯一重要的就是这个集合里 面的方法。

相关推荐
Bony-4 小时前
Go语言垃圾回收机制详解与图解
开发语言·后端·golang
吴老弟i16 小时前
Go 多版本管理实战指南
golang·go
Grassto20 小时前
HTTP请求超时?大数据量下的网关超时问题处理方案,流式处理,附go语言实现
后端·http·golang·go
Paul_092020 小时前
golang编程题2
开发语言·后端·golang
代码N年归来仍是新手村成员20 小时前
【Go】从defer关键字到锁
开发语言·后端·golang
源代码•宸1 天前
Leetcode—746. 使用最小花费爬楼梯【简单】
后端·算法·leetcode·职场和发展·golang·记忆化搜索·动规
x70x802 天前
Go中nil的使用
开发语言·后端·golang
源代码•宸2 天前
Leetcode—47. 全排列 II【中等】
经验分享·后端·算法·leetcode·面试·golang·深度优先
漫漫求2 天前
Go的panic、defer、recover的关系
开发语言·后端·golang
Tony Bai2 天前
2025 Go 官方调查解读:91% 满意度背后的隐忧与 AI 时代的“双刃剑”
开发语言·后端·golang