我有一个名为“DoSomething”的方法。 DoSomething 将二进制源数据对其进行操作,并写出二进制数据。 DoSomething 需要足够通用以处理源和目标的 []byte 数组或文件句柄。为此,我试图声明这样的方法:
func DoSomething(源 *io.ReadSeeker, 目标 *io.WriteSeeker)
我已经实现了 ReadSeeker 和 WriteSeeker 来处理缓冲区,使用我自己的自定义、必需的方法(如果有一种方法可以自动完成这个,我也很想听听)。 不幸的是,我似乎无法弄清楚如何从文件句柄创建 io.ReadSeeker 或 io.WriteSeeker。我相当确定必须有一些预先准备好的方法来处理这个问题,而不必手动实现它们。这可能吗?
最佳答案
一个文件已经实现了这两个。你可以这样做:
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)
}
此外,您不需要将指针传递给接口(interface),这使得处理它们变得更加容易。
关于file-io - 来自 [] 字节或文件的 io.WriteSeeker 和 io.ReadSeeker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20602131/