当错误为零时,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文档:
如果编码符文无效,则消耗一个字节并返回大小为1的unicode.ReplacementChar(U + FFFD)。
那么在错误为零的情况下,在什么情况下会返回0号符文?
答案 0 :(得分:1)
没有bufio.Reader ReadRune方法返回size == 0和err == nil的情况。
在无法读取有效符文的情况下,该方法读取符文或单个字节。在这两种情况下,返回的大小都大于零。