Довольно новый at go. Я пытаюсь в основном прочитать все файлы в каталоге и подкаталоге, заполнить фрагмент, а затем обработать дальше. Вот код (Основные функции смотреть являются Main и expandDirectoryПустой ломтик возвращен
package main
import (
"fmt"
"io/ioutil"
"os"
)
const dirname string = "MyDirectory"
func check(e error) {
if e != nil {
panic(e)
}
}
func expandDirectory(currentDirectory string, allFiles []os.FileInfo) []os.FileInfo {
files, e := ioutil.ReadDir(currentDirectory)
check(e)
for _, internalDir := range files {
switch mode := internalDir.Mode(); {
case mode.IsDir():
var filepath = currentDirectory + internalDir.Name() + "\\"
expandDirectory(filepath, allFiles)
case mode.IsRegular():
allFiles = append(allFiles, internalDir)
}
}
return allFiles
}
func main() {
allFiles := expandDirectory(dirname, make([]os.FileInfo, 5))
fmt.Printf("%v", cap(allFiles))
}
Окончательный печати напечатает 5, который представляет собой первоначальное значение.
Просто FYI, то expandDirectory функция просто рекурсивная функция случай каталогов и добавление ссылки на файл в случае файла.
Спасибо за помощь
Где я буду неправильно
окончательный код (только изменения)
func main() {
allFiles := expandDirectory(dirname)
}
func expandDirectory(currentDirectory string) []os.FileInfo {
allFiles := make([]os.FileInfo, 0, 5)
....
case mode.IsDir():
....
allFiles = append(allFiles, expandDirectory(filepath)...)
....
return allFiles
}