来自 []byte 或文件的 io.WriteSeeker 和 io.ReadSeeker

我有一个名为“DoSomething”的方法。DoSomething 会取二进制源数据对其进行操作,并写出二进制数据。DoSomething 需要足够通用以处理源和目标的 []byte 数组或文件句柄。为了实现这一点,我试图像这样声明方法:

func DoSomething(source *io.ReadSeeker, destination *io.WriteSeeker)

我已经实现了 ReadSeeker 和 WriteSeeker 来处理缓冲区,使用我自己自定义的、必需的方法(如果有一种方法可以自动完成这个,我也很想听听)。不幸的是,我似乎无法弄清楚如何从文件句柄创建 io.ReadSeeker 或 io.WriteSeeker。我相当确定必须有一些预先处理好的方法,而不必手动实现它们。这可能吗?


阿晨1998
浏览 416回答 2
2回答

倚天杖

一个文件已经实现了这两个。你可以这样做:package mainimport (   "fmt"   "io"   "os")func main() {   f, err := os.Open("test.txt")   if err != nil {     fmt.Println(err)   }   defer f.Close()   f2, err := os.Create("test2.txt")   if err != nil {      fmt.Println(err)   }   defer f2.Close()   DoSomething(f, f2) }func DoSomething(source io.ReadSeeker, destination io.WriteSeeker) {   io.Copy(destination, source)}此外,您不需要将指针传递给接口,这使得处理它们变得更加容易。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go