go
fileシステムを理解する質問:ログファイル操作に移動するには、ファイルシステムをmockまたは抽象化し、潜在的にメモリーファイルを作成する方法System?
回答:
をgoでファイルシステムをmockまたは抽象化するには、ファイルおよびファイルシステム操作のインターフェイスを定義することができます。 Open(名前文字列)(ファイル、エラー) stat(name string)(os.fileinfo、エラー) } ファイルインターフェイスを入力{ io.closer io.reader io.readerat io.seeker stat()(os.fileinfo、エラー) }
ローカルディスクを使用してデフォルトのファイルシステムの実装を作成します:
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) }
カスタムコードを使用してファイルシステムインターフェイスを実装してください:
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) }
ファイルシステムの引数を受け入れるようにコードを変更する:
type myFS struct { // Custom file system implementation } func (myFS) Open(name string) (file, error) { // Custom implementation for opening a file // Log the file operation fmt.Printf("Opened file: %s\n", name) // Return a mock file object return &mockFile{}, nil } func (myFS) Stat(name string) (os.FileInfo, error) { // Custom implementation for getting file info // Log the file operation fmt.Printf("Get file info: %s\n", name) // Return mock file info return &os.FileInfo{}, nil }
カスタムファイルシステムの実装を注入することにより、ファイル操作をログにして、ファイルおよびファイルシステムインターフェイスを適切に実装して、インメモリーファイルシステムを作成できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3