当错误为零时,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。
该方法在无法读取有效符文的情况下读取符文或单个字节。在这两种情况下,返回的大小都大于零。