布菲奥.读取符文 - 大小为 0(返回值)可能



当错误为零时,ReadRune 真的可以有一个大小为 0 的返回值吗?

我很好奇,因为我看到了一些带有以下代码的在线示例:

//assuming input = *bufio.Reader
r, size, err := input.ReadRune()
if size == 0 && err == nil {
    return 0, nil
} else if err != nil {
    return 0, err
}
return r, nil

但是,根据go文档:

如果编码的符文无效,它将消耗一个字节并返回 unicode。替换字符 (U+FFFD),大小为 1。

那么在什么情况下,当错误为零时,会返回大小为 0 的符文呢?

没有布菲奥的情况。Reader ReadRune 方法返回大小 == 0 和 err == nil。

该方法在无法读取有效符文

的情况下读取符文或单个字节。在这两种情况下,返回的大小都大于零。

最新更新