zoukankan      html  css  js  c++  java
  • Golang标准库——io-接口

    接口

    Read相关

    Reader

    Reader接口用于包装基本的读取方法。

    type Reader interface {
        //将数据读入到p中,直到读满p或者读取的过程中遇到错误,此时返回的n<len(p)同时err!=nil
        //如果正常结束的话n也可能小于len(p),此时err==io.EOF(var EOF = errors.New("EOF"))
    	Read(p []byte) (n int, err error)
    }
    
    

    ReaderFrom

    ReaderFrom实现从其他Reader读取数据

    type ReaderFrom interface {
        //从 r 中读取数据,直到 EOF 或发生错误。
        //不会返回EOF错误
    	ReadFrom(r Reader) (n int64, err error)
    }
    

    ReaderAt

    ReaderAt接口使得可以从指定偏移量处开始读取数据。

    type ReaderAt interface {
        //从基本输入源的偏移量 off 处开始,将 len(p) 个字节读取到 p 中。
        //若一些数据可用但不到 len(p) 字节,ReadAt 就会阻塞直到所有数据都可用或产生一个错误。 在这一点上 ReadAt 不同于 Read。
        //若 ReadAt 按查找偏移量从输入源读取,ReadAt 应当既不影响基本查找偏移量也不被它所影响。
    	ReadAt(p []byte, off int64) (n int, err error)
    }
    

    ByteReader/RuneReader

    读取一个Byte或Rune。

    type ByteReader interface {
    	ReadByte() (byte, error)
    }
    type RuneReader interface {
        //读取单个UTF-8字符,返回其rune和该字符占用的字节数。
    	ReadRune() (r rune, size int, err error)
    }
    
    

    ByteScanner/RuneScanner

    在ByteReader/RuneReader基础上增加了一个UnreadByte/UnreadRune方法,作用在于读取后回退一个,不能连续回退

    type RuneScanner interface {
    	RuneReader
    	UnreadRune() error
    }
    

    Write相关

    Writer

    用于包装基本的写入方法。

    type Writer interface {
        //len(p) 字节数据从p写入底层的数据流
        //返回写入的字节数(0 <= n <= len(p))和遇到的任何导致写入提取结束的错误
    	Write(p []byte) (n int, err error)
    }
    

    WriterTo

    type WriterTo interface {
        //将数据写入w直到没有数据可以写入或者遇到错误
        //返回值n是写入的字节数,执行时遇到的任何错误也会被返回
    	WriteTo(w Writer) (n int64, err error)
    }
    

    WriterAt

    type WriterAt interface {
        //将p全部len(p)字节数据写入底层数据流的偏移量off位置
        //WriteAt写入的对象是某个有偏移量的底层输出流
        //WriteAt方法既不应影响底层的偏移量,也不应被底层的偏移量影响
    	WriteAt(p []byte, off int64) (n int, err error)
    }
    

    ByteWriter

    type ByteWriter interface {
    	WriteByte(c byte) error
    }
    

    其他接口

    Seeker

    包装基本的移位方法,还有其与Reader、Writer接口结合的接口。

    type Seeker interface {
        //Seek方法设定下一次读写的位置
        //偏移量为offset
        //校准点由whence确定:0表示相对于文件起始;1表示相对于当前位置;2表示相对于文件结尾
        Seek(offset int64, whence int) (int64, error)
    }
    
  • 相关阅读:
    深度解析VC中的消息传递机制(上)
    DLL的远程注入技术
    一些游戏编程的书[转]
    [转]小小C的C++之歌
    Windows Server 2008无法使用arp命令添加静态MAC绑定
    如何调用未公开的API函数[转]
    IOCP中的socket错误和资源释放处理方法
    TinyXML应用例子
    微软C/C++ 编译器选项参考
    [摘录]这几本游戏编程书籍你看过吗?
  • 原文地址:https://www.cnblogs.com/suolu/p/6731182.html
Copyright © 2011-2022 走看看