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种定义方式都是一样的效果。方法的顺序变化也没有影响,唯一重要的就是这个集合里 面的方法。

相关推荐
何以解忧,唯有..2 小时前
Go 语言数据类型详解:从基础到复合类型
开发语言·golang·mfc
踏着七彩祥云的小丑2 小时前
Go学习第7天:Map集合 + 递归函数 + 类型转换
开发语言·学习·golang·go
何以解忧,唯有..2 小时前
Go语言变量的声明方式详解
开发语言·后端·golang
寂夜了无痕2 小时前
Go 多版本管理工具G 保姆级安装配置教程
golang·go多版本管理
张忠琳3 小时前
【Go 1.26.4】Golang Slice 深度解析
开发语言·后端·golang
张忠琳17 小时前
【Go 1.26.4】Golang Channel 深度解析
开发语言·后端·golang
张忠琳20 小时前
【Go 1.26.4】Golang Map 深度解析
开发语言·后端·golang
何以解忧,唯有..1 天前
Go 语言安装与环境配置完整指南
开发语言·后端·golang
踏着七彩祥云的小丑1 天前
Go 学习第6天:结构体 + 切片 + range遍历
开发语言·学习·golang·go
浮尘笔记1 天前
Go实现大文件异步流式采集引擎
开发语言·后端·golang