一尘不染

如何在Go中模拟/抽象文件系统?

go

我希望能够将go应用程序发出的每次写入/读取记录到底层操作系统,并且(如果可能)将FS完全替换为仅驻留在内存中的FS。

可能吗?怎么样?也许有一个现成的解决方案?


阅读 217

收藏
2020-07-02

共1个答案

一尘不染

这直接是您(可能)不了解Go的 Andrew
Gerrand的10件事

var fs fileSystem = osFS{}

type fileSystem interface {
    Open(name string) (file, error)
    Stat(name string) (os.FileInfo, error)
}

type file interface {
    io.Closer
    io.Reader
    io.ReaderAt
    io.Seeker
    Stat() (os.FileInfo, error)
}

// osFS implements fileSystem using the local disk.
type osFS struct{}

func (osFS) Open(name string) (file, error)        { return os.Open(name) }
func (osFS) Stat(name string) (os.FileInfo, error) { return os.Stat(name) }

为此,您需要编写代码以接受fileSystem参数(也许将其嵌入其他类型,或者nil表示默认文件系统)。

2020-07-02