Go 中的模拟/抽象文件系统
要求:
目标是监视所有文件系统读取并写入 Go 应用程序,并可能用内存中的文件系统替换物理文件系统
解决方案:
Go 的创建者 Andrew Gerrand 提供了一个简单而有效的解决方案:
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) }
要使用此解决方案:
您的应用程序代码应该使用 fs 变量作为文件系统接口,而不是直接使用 os 包。这使您可以根据需要轻松模拟或替换文件系统。
以上是如何模拟或抽象 Go 中的文件系统以实现测试和灵活性?的详细内容。更多信息请关注PHP中文网其他相关文章!