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 содержит имя и тип (файл/директория) без системного вызова statos.FileInfo (в Walk) требует stat для каждого файла - медленнее на больших деревьяхd.Info() явноДля рекурсивного обхода директорий всегда используйте WalkDir вместо устаревшего Walk.