bufio.Reader ReadRune - 大小0(返回值)可能吗?

时间:2016-03-15 21:12:49

标签: go

当错误为零时,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号符文?

1 个答案:

答案 0 :(得分:1)

没有bufio.Reader ReadRune方法返回size == 0和err == nil的情况。

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