Dateisystem in Go verspotten/abstrahieren
Anforderung:
Ziel ist es, alle Lesevorgänge im Dateisystem zu überwachen und schreibt in eine Go-Anwendung und ersetzt möglicherweise das physische Dateisystem durch ein In-Memory-Dateisystem Alternative.
Lösung:
Andrew Gerrand, der Erfinder von Go, bietet eine einfache, aber effektive Lösung:
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) }
So verwenden Sie diese Lösung:
Ihr Anwendungscode sollte die fs-Variable als verwenden die Dateisystemschnittstelle, anstatt direkt das Betriebssystempaket zu verwenden. Auf diese Weise können Sie das Dateisystem bei Bedarf einfach nachahmen oder ersetzen.
Das obige ist der detaillierte Inhalt vonWie kann ich das Dateisystem in Go für Test und Flexibilität verspotten oder abstrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!