我希望能够记录我的Go应用程序向底层操作系统发出的每一次读/写操作,并且(如果可能的话)将FS完全替换为只驻留在内存中的文件系统.
可能吗?怎样也许有现成的解决方案?
我希望能够记录我的Go应用程序向底层操作系统发出的每一次读/写操作,并且(如果可能的话)将FS完全替换为只驻留在内存中的文件系统.
可能吗?怎样也许有现成的解决方案?
这是Andrew Gerrand的10 things you (probably) don't know about Go:
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
表示默认文件系统).