io


type Reader

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

Reader 接口包装了基本的 Read 方法。

Read 将 len(p) 个字节读取到 p 中。它返回读取的字节数 n(0 <= n <= len(p)) 以及任何遇到的错误。即使 Read 返回的 n < len(p),它也会在调用过程中使用 p 的全部作为暂存空间。若一些数据可用但不到 len(p) 个字节,Read 会照例返回可用的东西, 而不是等待更多。

当 Read 在成功读取 n > 0 个字节后遇到一个错误或 EOF 情况,它就会返回读取的字节数。 它会从相同的调用中返回(非nil的)错误或从随后的调用中返回错误(和 n == 0)。 这种一般情况的一个例子就是 Reader 在输入流结束时会返回一个非零的字节数, 可能的返回不是 err == EOF 就是 err == nil。无论如何,下一个 Read 都应当返回 0, EOF。

调用者应当总在考虑到错误 err 前处理 n > 0 的字节。这样做可以在读取一些字节, 以及允许的 EOF 行为后正确地处理I/O错误。

Read 的实现在 len(p) == 0 以外的情况下会阻止返回零字节的计数和 nil 错误, 调用者应将返回 0 和 nil 视作什么也没有发生;特别是它并不表示 EOF。

实现必须不保留 p。

type Writer

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

Writer 接口包装了基本的 Write 方法。

Write 将 len(p) 个字节从 p 中写入到基本数据流中。它返回从 p 中被写入的字节数 n(0 <= n <= len(p))以及任何遇到的引起写入提前停止的错误。若 Write 返回的 n < len(p),它就必须返回一个非nil的错误。Write 不能修改此切片的数据,即便它是临时的。

实现必须不保留 p。

type Closer

type Closer interface {
    Close() error
}

Closer 接口包装了基本的 Close 方法。

Close 的行为在第一次调用后没有定义。具体实现可能有自己的行为描述。

type Seeker

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

Seeker 接口包装了基本的 Seek 方法。

Seek 将 offset 置为下一个 Read 或 Write 的偏移量 ,它的解释取决于 whence: 0 表示相对于文件的起始处,1 表示相对于当前的偏移,而 2 表示相对于其结尾处。 Seek 返回新的偏移量和一个错误,如果有的话。

对负数偏移量进行 Seek 会产生错误。对任何正数偏移量进行 Seek 是合法的,但对底层类型的后续 I/O 操作行为则取决于具体实现。

func WriteString

func WriteString(w Writer, s string) (n int, err error)

WriteString 将字符串 s 的内容写入 w 中,它接受一个字节数组。 若 w 已经实现了 WriteString 方法,就可以直接调用它。


文章作者: ffacs
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ffacs !
  目录