go语言接口详解(go 接口)

技术Go语言中io包核心接口怎么用小编给大家分享一下Go语言中io包核心接口怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Readeri

边肖将与大家分享如何用Go语言使用io包的核心接口。相信大部分人还不太了解,所以分享这篇文章给大家参考。希望你看完这篇文章会有很多收获。让我们一起来发现吧!

Reader

io。读取器接口定义了Read方法,用于将数据读入字节数组:

参数:字节数组p,将数据读入p。

返回值:这次读取的字节数n,以及遇到的错误err。

typeReaderinterface{

read(p[]字节)(nint,error)

}方法功能的详细说明

该方法读取数据并将其写入字节数组p。因为p有大小,所以它一次最多读取len(p)个字节。

该方法返回读取数据字节数n(0=n=len(p))和读取过程中遇到的错误。

即使一次调用读取的数据小于len(p),整个字节数组P也可以作为临时存储空间。

如果数据源的数据量小于len(p)字节,该方法将只读取当前可用的数据,而不会等待更多数据到达。

何时返回错误

成功读取n(n0)字节后,如果出现错误或到达文件结尾,此调用必须返回读取的字节数n,但是对于err的值,您可以选择返回err(err!=nil),或者返回err (n=0,err!=零).一个常见的例子是,在读取n个字节后,它到达文件的末尾(EOF)。此时,您可以返回err=EOF或err=nil,下一次调用将返回N=0和ERR=EOF。

呼叫者应该注意,在每次呼叫之后,如果n0,则应该在考虑err是否为零之前处理数据。因为前面一点已经指出,如果读取n0字节后遇到错误,就会同时返回n0和err!=nil,因此您需要在考虑err之前处理数据。

注意方法的实现和调用。

如果要实现这个方法,不建议同时返回n=0和err=nil,除非len(p)=0。

如果您调用此方法并返回n=0和err=nil,您可以认为什么都没有发生,而不是您已经读取了文件结尾

实现此方法后,请确保不要保存字节数组P(保留地址用于其他目的)

00-1010 io。Writer接口定义了将数据写入文件的写入方法。

参数:字节数组p,将p中的数据写入文件。

返回值:成功写入的字节数n和遇到的错误。

typeWriterinterface {

写(p[]字节)(nint,error)

}方法功能的详细说明

此方法将P中的数据写入文件。

方法返回成功写入的字节数n(0=n=len(p))和写入过程中遇到的错误。

如果nlen(p),方法必须返回err!=零

方法不能修改字节数组p,即使是临时修改也是不允许的。

注意方法的实施。

实现此方法后,重要的是不要保存字节数组P,而只读取数据。

Writer

io。Closer接口定义了Close方法,用于关闭连接。

注意方法的实施。

第一次调用此方法后,再次调用此方法时应该生成什么行为?此接口未定义,取决于实现方法。

typescloserinterface {

关闭()错误

}

Closer

io。导引头接口定义了Seek方法,用于指定下次读写时的偏移量。

参数:根据时的偏移偏移量,计算新偏移时的起始值。

返回

值:基于 whence 和 offset 计算后新的偏移量值,以及可能产生的错误

type Seeker interface {
	Seek(offset int64, whence int) (int64, error)
}

方法功能详解

io包中定义了如下三种 whence

const (
	SeekStart   = 0 // 基于文件开始位置
	SeekCurrent = 1 // 基于当前偏移量 
	SeekEnd     = 2 // 基于文件结束位置
)

如果计算后新的偏移量,在文件起始位置之前,返回 error!=nil

任意正数的偏移量都是合法的,但是对数据源如何进行I/O操作,依赖具体的实现方法

组合接口

在go语言中,可以利用接口的组合,来囊括其他接口中的方法,类似于定义了一个父接口,可以包含多个子接口。如果一个 struct 实现了所有子接口的方法,也就相当于实现了父接口。小接口 + 接口组合的方式,很大程度上增加了程序的灵活性,在我们自己业务开发过程中,可以借鉴这种做法。

针对上面四个最小粒度的接口,io包定义了如下几种组合接口:

// ReadWriter 是 Read 和 Write 方法的组合
type ReadWriter interface {
	Reader
	Writer
}

// ReadCloser 是 Read 和 Close 方法的组合
type ReadCloser interface {
	Reader
	Closer
}

// WriteCloser 是 Write 和 Close 方法的组合
type WriteCloser interface {
	Writer
	Closer
}

// ReadWriteCloser 是 Read、Write 和 Close 方法的组合
type ReadWriteCloser interface {
	Reader
	Writer
	Closer
}

// ReadSeeker 是 Read 和 Seek 方法的组合
type ReadSeeker interface {
	Reader
	Seeker
}

// WriteSeeker 是 Write 和 Seek 方法的组合
type WriteSeeker interface {
	Writer
	Seeker
}

// ReadWriteSeeker 是 Read、Write 和 Seek 方法的组合
type ReadWriteSeeker interface {
	Reader
	Writer
	Seeker
}

以上是“Go语言中io包核心接口怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/148696.html

(0)

相关推荐

  • 如何进行charles断点调试

    技术如何进行charles断点调试本篇文章给大家分享的是有关如何进行charles断点调试,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。适用场景:客户端发起

    攻略 2021年11月17日
  • dna聚合酶作用部位,DNA聚合酶作用部位及功能

    技术dna聚合酶作用部位,DNA聚合酶作用部位及功能DNA聚合酶作用部位是磷酸二酯键dna聚合酶作用部位。 1、聚合作用:在引物RNA-OH末端,以dNTP为底物,按模板DNA上的指令,即A与T,C与G的配对原则,逐步逐

    生活 2021年10月24日
  • 官场小说,好看的官场小说全本给推荐一下

    技术官场小说,好看的官场小说全本给推荐一下《人民的名义》作者:周梅森,一位国家部委的项目处长被人举报受贿千万,当最高人民检察院反贪总局侦查处处长侯亮平前来搜查时,看到的却是一位长相憨厚官场小说、衣着朴素的“老农民”在简陋

    生活 2021年10月20日
  • python+appium自动化测试-Android端环境配置

    技术python+appium自动化测试-Android端环境配置 python+appium自动化测试-Android端环境配置一、安装配置JDK
    一、安装环境
    1、本机系统:Windows 10(6

    礼包 2021年11月10日
  • python多继承构造方法(python类的继承)

    技术Jython中单继承和多继承的示例分析这篇文章主要介绍Jython中单继承和多继承的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Jython的继承类继承的能力是面向对象编程的基础。J

    攻略 2021年12月17日
  • 区块链需要学javascript吗(javascript编写区块链)

    技术如何用JS构建你自己的区块链如何用JS构建你自己的区块链,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言区块链太复杂,那我们就讲点简单的。用JS来

    攻略 2021年12月14日