gpt4 book ai didi

go - 当我的 io.Writer 故意不写入它传递的所有字节时,它应该返回什么 "number of bytes written"

转载 作者:IT王子 更新时间:2023-10-29 02:33:53 27 4
gpt4 key购买 nike

我想创建一个实现 io.Writer 的结构,即 Write(p []byte) (n int, err error)。该结构将省略传递给它的某些字节,因此实际上不会写入 p 参数中传递的所有字节。 (实际目的并不重要,但它可以是例如忽略写入的前 10 个字节,忽略第二个字节或其他改变从调用者传递给方法的字节数写入的字节数的东西)。

The documentation io.WriterWrite 方法说明如下(强调我的):

Write writes len(p) bytes from p to the underlying data stream. It returns the number of bytes written from p (0 <= n <= len(p)) and any error encountered that caused the write to stop early. Write must return a non-nil error if it returns n < len(p). Write must not modify the slice data, even temporarily.

我应该返回什么作为 n 值?为了遵守文档,成功后我应该返回 len(p)。然而,该方法实际上可能没有写入那么多字节,返回值将是“错误的”。

最佳答案

成功返回len(p)

function called当您写入/dev/null 时,返回您尝试“写入”的字节数。它实际上从不写入任何内容,但它会正确地处理 发送给它的数据。

我假设在您的情况下,如果您的编写器无法正确处理发送给它的所有字节,您应该只返回 n < len(p)。

然后,您编写器的文档应该非常清楚说明写入和未写入的数据。使用您的函数的人需要知道写入完成后可以检索哪些数据。

关于go - 当我的 io.Writer 故意不写入它传递的所有字节时,它应该返回什么 "number of bytes written",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32571504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com