"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية السخرية من نظام الملفات في GO لتسجيل عمليات التسجيل والعمليات في الذاكرة؟

كيفية السخرية من نظام الملفات في GO لتسجيل عمليات التسجيل والعمليات في الذاكرة؟

نشر في 2025-03-23
تصفح:844

How to Mock the File System in Go for Logging and In-Memory Operations?

النظام؟

الإجابة:

افتح (سلسلة الاسم) (ملف ، خطأ) STAT (سلسلة الاسم) (OS.FileInfo ، خطأ) } اكتب واجهة الملف { io.closer IO.Reader io.readerat io.seker STAT () (OS.FileInfo ، خطأ) } قم بإنشاء تطبيق نظام ملفات افتراضي باستخدام القرص المحلي:

اكتب OSFS struct {} Func (OSFS) افتح (اسم السلسلة) (ملف ، خطأ) {return os.open (name)} FUNC (OSFS) Stat (سلسلة الاسم) (OS.FileInfo ، خطأ) {return os.stat (name)} قم بتنفيذ واجهة نظام الملفات باستخدام الكود المخصص الخاص بك: // تنفيذ نظام الملفات المخصص } فتح (myfs) افتح (سلسلة الاسم) (ملف ، خطأ) { // تطبيق مخصص لفتح ملف // سجل عملية الملف fmt.printf ("الملف المفتوح: ٪ s \ n" ، الاسم) // إرجاع كائن ملف وهمية Return & Mockfile {} ، لا شيء } FUNC (MYFS) Stat (سلسلة الاسم) (OS.FileInfo ، خطأ) { // تطبيق مخصص للحصول على معلومات الملف // سجل عملية الملف fmt.printf ("الحصول على معلومات الملف: ٪ s \ n" ، الاسم) // إرجاع معلومات ملف وهمية return & os.fileinfo {} ، nil }

قم بتعديل الكود لقبول وسيطة نظام الملفات:

func myfunc f ، err: = fs.open ("myfile.txt") إذا خطأ! = لا شيء { fmt.println (err) يعود } // تنفيذ عمليات الملفات باستخدام كائن الملف المسموح به }

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)
}
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3