@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())
    }
}

А вообще - это для каждого суррогатного типа нужен свой приём приведения к другому типу? Или есть какой-то универсальный подход?
  • Вопрос задан
  • 212 просмотров
Решения вопроса 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
Т.е. грубо это тот же интерфейс, методы которого можно вызывать точно также.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы