🟡 Средний · 2 очк. I/O и потоки данных
Для чего используется filepath.WalkDir и чем он лучше filepath.Walk?
A WalkDir (Go 1.16+) эффективнее: передает fs.DirEntry вместо os.FileInfo, не вызывая лишний stat для каждого файла
B WalkDir работает только с директориями
C Walk быстрее WalkDir
D WalkDir поддерживает только Linux
Объяснение вопроса

filepath.WalkDir (Go 1.16+) - улучшенная версия filepath.Walk:

// WalkDir - рекомендуемый способ (Go 1.16+)
filepath.WalkDir("./src", func(path string, d fs.DirEntry, err error) error {
    if err != nil { return err }
    if d.IsDir() { return nil }
    if filepath.Ext(path) == ".go" {
        fmt.Println(path)
    }
    return nil
})

Отличия от filepath.Walk:

  • fs.DirEntry содержит имя и тип (файл/директория) без системного вызова stat
  • os.FileInfo (в Walk) требует stat для каждого файла - медленнее на больших деревьях
  • Если нужен размер или время модификации, вызовите d.Info() явно

Для рекурсивного обхода директорий всегда используйте WalkDir вместо устаревшего Walk.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.