golang之输入输出

Writer 和 Reader 接口

type Writer interface {
    Write(p []byte) (n int, err error)
}

io.Writer接口的声明,接收唯一一个方法Write,这个方法接收一个byte切片,并返回两个值。第一个值是写入的字节数,第二个值是error错误码。

type Reader interface {
    Read(p []byte) (n int, err error)
}

(1)读取数据来填满被传入的byte切片。允许出现读取的字节数小于byte切片的长度,并且如果在读取时已经读到数据但是数据不足以填满byte切片时,不应该等待新数据,而是要直接返回已读数据。

(2)处理达到文件末尾(EOF)的情况的指导,当读到最后一个字节时,可以有两种选择。一种是Read返回最终读到的字节数,并且返回EOF作为错误值,另一种是返回最终读到的字节数,并返回nil作为错误值。在后一种情况下,下一次读取的时候,由于没有更多的数据可供读取,需要返回0作为读到的字节数,以及EOF作为错误值。

(3)给调用 Read 的人的建议。任何时候 Read 返回了读取的字节数,都应该优先处理这些读取到的字节,再去检查 EOF 错误值或者其他错误值

(4)建议 Read方法的实现永远不要返回 0 个读取字节的同时返回 nil 作为错误值。如果没有读到值,Read 应该总是返回一个错误。

人生就是要不断折腾
原文地址:https://www.cnblogs.com/xiangxiaolin/p/13090100.html