GOLang IO接口与工具如何使用


这篇文章主要介绍“GOLangIO接口与工具如何使用”,在日常操作中,相信很多人在GOLangIO接口与工具如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”GOLangIO接口与工具如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!io.Copy(dst Writer, src Reader)io.CopyBuffer(dst Writer, src Reader, buf []byte)io.CopyN(dst Writer, src Reader, buf []byte)io.ReadWriter 这个接口即是io.Reader的扩展接口,也是io.Writer的扩展接口;该接口定义了一组行为,包含且仅包含了基本的字节序列读取方法Read,和字节写入方法Write。io.ReadCloser: 该接口除了包含基本的字节序列读取方法以外,还拥有一个基本的关闭方法Close。Close方法一般用于关闭数据读写的通道。这个接口其实是io.Reader免费云主机域名口和io.Closer接口的组合。io.ReadWriteCloser:这个接口是io.Readerio.Writerio.Closer三个接口的组合。io.ReadSeeker :该接口拥有一个寻找读写位置的基本方法Seek。该方法可以根据给定的偏移量,基于数据的起始位置、末尾位置、或者当前读写位置去寻找新的读写位置。这个新的读写位置用于表明下一次读或写时的起始索引。Seek是io.Seeker接口唯一拥有的方法。io.ReadWriteSeeker:这个接口是io.Readerio.Writerio.Seeker三个接口的组合。*io.LimitedReader:此类型的基本类型会包装io.Reader类型的值,并提供一个额外的受限读取的功能。该类型的读取方法Read返回的总数据量会受到限制。无论该方法被调用多少次。这个限制由该类型的字段N指明,单位是字节。*io.SectionReader :此类型的基本类型可以包装io.ReaderAt类型的值,并且会限制它的Read方法,只能读取原始数据的一部分(或者说某一段)。这个数据段段起始位置和末尾位置,需要在它被初始化的时候就指明,并且之后无法变更。该类型的值的行为与切片有些类型,只会对外暴露在其窗口之中的那些数据。*io.teeReader:该类型是一个包级私有的数据类型,也是io.TeeReader函数结果值的实际类型。TeeReader(r Reader, w Writer)函数的结果值的Read方法,会把r中的数据经过作为方法参数的字节切片p写入w中。也就是说,p是r和w的数据搬运工。*io.multiReader:该类型也是包级私有的数据类型。类似地,io包中有一个名为MultiReader的函数,它可以接受若干个io.Reader类型的参数值,并返回一个实际类型为io.multiReader的结果值。当这个结果值当Read方法被调用,它会顺序地从前面那些io.Reader类型的参数值中读取数据。因此,我们也称之为多对象读取器。*io.pipe:此类型是一个包级私有的数据类型。它不但实现了io.Reader接口,而且还实现了io.Writer接口。实际上,io.PipeReader类型和io.PipeWriter类型拥有的所有指针方法都是以它为基础的。这些方法都是代理了io.pipe类型值所拥有的某一个方法而已。Pipe() (*PipeReader, *PipeWriter) 返回两个类型的指针值,并分别把它们作为其生成的同步内存管道的两端。所以可以说,*io.pipe类型就是io包提供的同步内存管道的核心实现。*ip.PipeReader该类型可以被视为*io.pipe类型的代理类型。它代理了后者的一部分功能,并基于后者实现了io.ReadClosed接口。同时,它还定义了同步内存管道的读取端。在实际的面试中,只要应聘者能够从某一个方面出发,说出io.Reader的扩展接口及其存在意义,或者说清楚该接口的三五个实现类型,那么就可以算是基本回答正确了。没有嵌入其它接口并且只定义了一个方法的接口,总共有11个。其中有3个接口有着众多的扩展接口和实现类型,它们是:io.Readerio.Writerio.Closer。可以把这些接口分为四类:读取、写入、关闭、读写位置设定。前三个操作属于基本的I/O操作。上面已经讨论,核心接口io.Reader有5个扩展接口,6个实现类型。更多的读操作接口还有:io.ByteReaderio.RuneReader。它们分别定义了一个读取方法:ReadByteReadRune。用于读取下一个单一的字节和Unicode字符。strings.Readerbytes.Buffer都是io.ByteReaderio.RuneReader的实现类型。同时,这两个接口,还都实现了io.ByteScannerio.RuneScannerio.ByteScanner接口内嵌了简单接口io.ByteReader、并额外定义了UnreadByte方法,这样,它就抽象出一个能够读取和读回退单字节的功能集。io.RuneScanner接口内嵌了简单接口io.RunneReader,并额外定义了UnreadRune方法。这样,它就抽象出一个能够读取和读回退单个Unicode字符的功能集。io.ReaderAt接口只定义了一个方法ReadAt。ReadAt是一个纯粹的只读方法。它只读其所属值中包含的字节,而不对这个值进行真正的修改。比如,它绝对不能修改已读计数的值。io.WriterTo接口,定义了一个名为WriteTo的方法。它只会接受一个io.Writer类型的参数值,并从该参数值中读出数据,并写入其所属值中。与之对应的接口是io.ReaderFromio.CopyN函数,在复制数据的时候,会检查其参数src,是否实现了io.WriterTo接口。如果是,那么它就直接利用该值的WriteTo方法,把其中的数据拷贝给参数dst参数的值。类似地,这个函数还会检查dst的值是否实现了io.ReaderFrom接口。如果是,那么它就会利用这个值的ReadFrom方法,直接从src那里把数据拷贝到该值。io.Copyio.CopyBuffer,和io.CopyN一样。因为它们内部复制到时候,使用同一套代码。io.ReaderFrom接口,它定义了一个名叫ReadFrom的写入方法。该方法接受一个io.Reader类型的参数值。并会从该参数值中读取数据,并写入到所属值中。基于io.Writer 扩展的接口io.ReadWriter*io.pipe就是io.ReadWriter 接口的实现类型。io.ReadWriteCloseio.ReadWriteSeekerio.WriteCloserio.WriteSeekerio.ByteWriterio.WriterAt*io.File不但是io.WriterAt的实现类型,同时还实现了io.ReadWriterCloserio.ReadWriteSeeker接口。io.Seeker接口作为一个读写位置设定相关的接口,仅定义了一个方法,叫Seek。基于io.Seeker扩展的接口:io.ReadSeekerio.ReadWriteSeekerio.WriteSeekerio.WriteSeeker是基于io.Writerio.Seeker的扩展接口*strings.Reader*io.SectionReader都实现了io.Seeker接口,这两个类型也都是io.ReaderAt接口的实现类型。io.Closer它的实现类型,在io包里只有io.PipeReaderio.PipeWriterio.Readerio.ByteReaderio.RuneReaderio.ReaderAtio.WriterToio.Writerio.ByteWriterio.WriterAtio.ReaderFromio.Closerio.Seekerio.ReadWriterio.ReadCloserio.ReadSeekerio.ByteScannerio.RuneScannerio.ReadWriteCloserio.ReadWriteSeekerio.WriteCloserio.WriteSeeker到此,关于“GOLangIO接口与工具如何使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: Java怎么用堆解决Top-k问题

本篇内容介绍了“Java怎么用堆解决Top-k问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!堆其实就是一种二叉树,但是普通的二叉树是以链式结构进行储存数据的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/24 16:46
下一篇 05/24 16:46

相关推荐