test 是 'io 中可用的数据。ReadWriteCloser'

test is data available in `io.ReadWriteCloser`

提问人:user892960 提问时间:2/16/2023 最后编辑:user892960 更新时间:2/16/2023 访问量:104

问:

io.ReadWriteCloser在数据可供读取之前具有阻塞。Read()

如果我想测试它是否有可供读取的数据,而实际上没有它,该怎么办?由于我需要在以下两者之间进行一些其他处理:Read()

  • 它有可供读取的数据

  • io。复制(thisReadWriteCloser, anotherReadWriteCloser)
IO

评论

3赞 Cerise Limón 2/16/2023
无法确定对 Read 的调用是会阻止还是快速返回数据。
0赞 Hymns For Disco 2/16/2023
读取数据是否有需要避免/推迟的副作用?
0赞 user892960 2/16/2023
是的,我更新了我的工单,接下来我想做的动作是,所以通过这样做,我已经提前了阅读器,数据在传入时不再是原来的形状io.Copy(thisReadWriteCloser, anotherReadWriteCloser)Read()io.Copy()

答:

0赞 user892960 2/16/2023 #1

using 函数bufio.ReaderPeek()

bi := bufio.NewReader(i)
bi.Peek(1)

但是我有后续问题,在执行 : convert from 'bufio.Reader“改为”io.ReadWriteCloser'io.ReadWriteCloserbi.Peek(1)

评论

0赞 Hymns For Disco 2/16/2023
如果调用时缓冲区为空,它将调用底层(如您所说,这是阻塞)。PeekRead
0赞 user892960 2/16/2023
@HymnsForDisco确定我想要阻止行为,但不希望解锁后的读取行为,这对我来说是可以完成的。Peek()