Go中跳过多个字节的最佳方法是什么io.Reader
?也就是说,有没有这需要一个标准库函数读取和计数,将读取并处理数从字节读者?
用例示例:
func DoWithReader(r io.Reader) { SkipNBytes(r, 30); // Read and dispose 30 bytes from reader }
我不需要在流中向后移动,因此任何可以在不转换io.Reader
为其他读取器类型的情况下工作的东西都是首选.
你可以使用这种结构:
import "io" import "io/ioutil" io.CopyN(ioutil.Discard, yourReader, count)
它将请求的字节数复制到io.Writer
丢弃它所读取的内容中.
如果您io.Reader
是a io.Seeker
,您可能需要考虑在流中寻找跳过要跳过的字节数:
import "io" import "io/ioutil" switch r := yourReader.(type) { case io.Seeker: r.Seek(count, io.SeekCurrent) default: io.CopyN(ioutil.Discard, r, count) }