fileOrDir, err := os.Open(name)
if err != nil {
....
}
if fileOrDir.Stat().IsDir() {
....
} else {
...
}
Будьте осторожны, чтобы не открывать и не оценивать файл по имени.Это создаст состояние гонки с потенциальными последствиями для безопасности.
Если ваше открытие завершилось успешно, у вас есть действительный дескриптор файла, и вы должны использовать метод Stat () для получения статистики.Верхний ответ рискован, потому что они предлагают сначала вызвать os.Stat (), а затем предположительно os.Open (), но кто-то может изменить файл между двумя вызовами.