为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
阿晨1998 2021-07-07 13:05:49
我有一个名为“DoSomething”的方法。DoSomething 会取二进制源数据对其进行操作,并写出二进制数据。DoSomething 需要足够通用以处理源和目标的 []byte 数组或文件句柄。为了实现这一点,我试图像这样声明方法:func DoSomething(source *io.ReadSeeker, destination *io.WriteSeeker)我已经实现了 ReadSeeker 和 WriteSeeker 来处理缓冲区,使用我自己自定义的、必需的方法(如果有一种方法可以自动完成这个,我也很想听听)。不幸的是,我似乎无法弄清楚如何从文件句柄创建 io.ReadSeeker 或 io.WriteSeeker。我相当确定必须有一些预先处理好的方法,而不必手动实现它们。这可能吗?
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

一个文件已经实现了这两个。你可以这样做:


package main


import (

   "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)

}

此外,您不需要将指针传递给接口,这使得处理它们变得更加容易。


查看完整回答
反对 回复 2021-07-12
  • 2 回答
  • 0 关注
  • 415 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信