В данной инструкции показано, как получить список содержимого папки в Golang.

Как получить список файлов из папке на Golang?

1. Создайте директорию под названием folder;
2. Создайте файл listdir.go со следующим содержимым:

Форум Гоферов

Мы работаем над форумом для программистов на Golang. Очень нужны модераторы которые хотят помочь с ответами для новичков и помочь в развитии Go-сообщества.

Go на Форум

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК Go в Telegram

3. Запустите код через go run listdir.go в главном терминале;
4. Посмотрите на следующий результат:

список файлов папки

В примера выше используется два подхода для решения задачи. Первый, более простой, реализуется через использование функции listDirByReadDir и ReadDir из пакета ioutil. Данная функция возвращает срез структуры FileInfo, что представляет действительный контент директории. Обратите внимание, что функция ReadDir не читает папки рекурсивно. По факту, функция ReadDir использует метод Readdir типа File из пакета os.

С другой стороны, более сложный listDirByWalk использует функцию filepath.Walk, что принимает путь для обхода и в котором есть функция, что обрабатывает каждый файл или папку по данному пути. Главная разница в том, что функция Walk обходит директорию рекурсивно. Основой данного подхода является тип WalkFunc, где его функция нужна для получения результатов списка.

Обратите внимание, что функция блокирует рекурсивный вызов для базовых папок, возвращая ошибку filepath.SkipDir. Функция Walk также обрабатывает только указанный путь, игнорируя файлы из папок внутри указанного пути (в данном случае мы пропускаем вывод и возвращаем nil, потому что нам нужно обойти данную папку рекурсивно).