Задать вопрос
@VadimRublev
Go, front-end (ванильный).

Как привести тип os.FileInfo к типу string?

Как привести тип os.FileInfo к типу string? Что там такого, в os.FileInfo, помимо элементов в срезе?
В частности, хочу в срезе элементов в папке оставить только файлы определенного типа:
filesDir, err := ioutil.ReadDir(".")
for _, fileDir := range filesDir {
    if filepath.Ext(string(fileDir)) == ".txt" && !fileDir.IsDir() {
        fmt.Println("Файл(ы) .txt в текущей папке:", fileDir.Name())
    }
}

А вообще - это для каждого суррогатного типа нужен свой приём приведения к другому типу? Или есть какой-то универсальный подход?
  • Вопрос задан
  • 231 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
EvgenyMamonov
@EvgenyMamonov Куратор тега Go
Senior software developer, system architect
ioutil.ReadDir возвращает []fs.FileInfo
Это интерфейс, выглядит вот так
type FileInfo interface {
	Name() string       // base name of the file
	Size() int64        // length in bytes for regular files; system-dependent for others
	Mode() FileMode     // file mode bits
	ModTime() time.Time // modification time
	IsDir() bool        // abbreviation for Mode().IsDir()
	Sys() interface{}   // underlying data source (can return nil)
}


Т.е. в вашем случае filepath.Ext(string(fileDir)) можно заменить на filepath.Ext(fileDir.Name())
Это то, что нужно или нужно что-то другое?
По примеру кода не совсем понятно для чего вам нужно приведение к os.FileInfo/string.

Посмотрел os.FileInfo
Он определён как type FileInfo = fs.FileInfo
Т.е. грубо это тот же интерфейс, методы которого можно вызывать точно также.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы