当前我正在编写一个从bytes.Buffer中读取缓冲区的程序。它应该在发现字符e时停止阅读。但是当我使用for循环读取缓冲区时,我注意到一些奇怪的东西。当我把字节读数作为语句的一部分,我得到一个无限循环(example in go playground):为什么从一个字节读取时我得到一个永无止境的循环。缓冲区
b := bytes.NewBuffer([]byte("uoiea"))
for v, _ := b.ReadByte(); v != 'e'; {
println("The value is " + string(v))
}
但如果我删除它,并把它里面的for循环,它没有(example in go playground):
b := bytes.NewBuffer([]byte("uoiea"))
for ;; {
v, _ := b.ReadByte()
println("The value is " + string(v))
if v == 'e'{
break
}
}
有谁知道这是为什么?我发现添加break表达式是一种非常难看且容易出错的方式来解决这个问题。
如果e不在缓冲区中,这将导致无限循环。 – OneOfOne