Stream 实现Seek方法的流

Stream 实现Seek方法的流,stream,go,Stream,Go,我正在试图找到一个接口,它允许我创建一个流,允许从文件或[]字节中查找(也可以使用读取器),但在godoc中似乎找不到任何内容。bufio包中的一些类型可以很好地工作,但它们似乎不支持查找 有什么我忽略了的东西适合我正在寻找的吗?实现io.Seek接口,从而拥有Seek方法 io.Seeker is implemented by... *bytes.Reader *io.SectionReader io.ReadSeeker io.

我正在试图找到一个接口,它允许我创建一个流,允许从文件或
[]字节
中查找(也可以使用读取器),但在godoc中似乎找不到任何内容。
bufio
包中的一些类型可以很好地工作,但它们似乎不支持查找


有什么我忽略了的东西适合我正在寻找的吗?

实现
io.Seek
接口,从而拥有
Seek
方法

io.Seeker is implemented by...
        *bytes.Reader
        *io.SectionReader
        io.ReadSeeker
        io.WriteSeeker
        io.ReadWriteSeeker
        mime/multipart.File
        net/http.File
        *os.File
        *strings.Reader

因此,如果您正在处理一个文件,因此很可能是
*os.file
,您不需要做任何额外的事情来查找它。只要确保如果您使用的是接口而不是具体类型,那么您不希望使用
io.Reader
,而是
io.ReadSeeker

*os.File
(用于文件)和
*bytes.Reader
(用于从
[]byte
获得
io.Reader
)实现
io.Seek
接口,从而拥有
Seek
方法

io.Seeker is implemented by...
        *bytes.Reader
        *io.SectionReader
        io.ReadSeeker
        io.WriteSeeker
        io.ReadWriteSeeker
        mime/multipart.File
        net/http.File
        *os.File
        *strings.Reader

因此,如果您正在处理一个文件,因此很可能是
*os.file
,您不需要做任何额外的事情来查找它。只要确保如果您使用的是接口而不是具体类型,那么您不需要
io.Reader
而是
io.readseek

哇,谢谢!我想我也错过了
bytes
包。好奇的是,您是如何看到io.Seeker接口是由什么实现的?我编写了一个名为“implements”(实现)的工具,它可以显示“T implements I”和“I是由T实现的”关系。在本例中,我运行了
implements-interfaces io-types std-reverse
并滚动到io.Seeker.Wow,谢谢!我想我也错过了
bytes
包。好奇的是,您是如何看到io.Seeker接口是由什么实现的?我编写了一个名为“implements”(实现)的工具,它可以显示“T implements I”和“I是由T实现的”关系。在本例中,我运行了
implements-interfaces io-types std-reverse
,并滚动到io.seek.Call,但具有seek功能的流不是流而是缓冲区。可以调用任何内容,但具有seek功能的流不是流而是缓冲区。