【发布时间】:2016-11-13 10:01:41
【问题描述】:
目前我正在编写一个从 bytes.Buffer 读取缓冲区的程序。它应该在找到字符 e 时停止阅读。但是当我使用 for 循环读取缓冲区时,我发现了一些奇怪的东西。当我将字节读取作为 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 表达式是解决这个问题的一种非常丑陋且容易出错的方法。
【问题讨论】:
标签: go