我有一个名为“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)
}
此外,您不需要将指针传递给接口,这使得处理它们变得更加容易。
- 2 回答
- 0 关注
- 415 浏览
添加回答
举报
0/150
提交
取消