golang Добавляет точки перед форматами картинок, если их нет

/* golang Добавляет точки перед форматами картинок, если их нет Использовать так: go run addPointForNameImages.go /путь/к/папке */ package main import ( "fmt" "os" "strings" ) // Проверка ошибок func checkErr(err error) { if err != nil { panic(err) } } // Достаём путь к папке func getDirPath() string { args := os.Args[1:] if len(args) != 0 { return args[0] } return "." } // Добавляет в названии точку func nameToNameWithPoint(name string) string { // Необходимые форматы needFormats := [4]string{"jpg", "jpeg", "png", "webp"} needFormatsLen := [4]int{} // Добавляем размеры for i, format := range needFormats { needFormatsLen[i] = len(format) } length := len(name) if length <= 3 { return name } indexPoint := 0 lowerName := strings.ToLower(name) for i, format := range needFormats { if lowerName[length-needFormatsLen[i]:] == format { indexPoint = length - needFormatsLen[i] break } } if (indexPoint == 0 || name[indexPoint-1] == 46) { return name } //fmt.Println(rune('.')) 46 return name[:indexPoint] + "." + lowerName[indexPoint:] } // Читает данные с папки func readDir(dirPath string) []os.FileInfo { dir, err := os.Open(dirPath) checkErr(err) defer dir.Close() files, err := dir.Readdir(-1) checkErr(err) return files } // Показывает названия элементов func showFiles(files []os.FileInfo) { for i, file := range files { fmt.Printf("%d) %s\n", i, file.Name()) } } // Переименовывает названия элементов func renameFilesTofilesWithPoint(dirPath string, files []os.FileInfo) { dirPath += "/" nameWithPoint := "" name := "" for _, file := range files { name = file.Name() nameWithPoint = nameToNameWithPoint(name) if nameWithPoint == name { continue } oldPath := dirPath + name newPath := dirPath + nameWithPoint fmt.Printf("rename %s to %s\n", oldPath, newPath) err := os.Rename(oldPath, newPath) checkErr(err) } } // Старт func main() { dirPath := getDirPath() files := readDir(dirPath) //showFiles(files) renameFilesTofilesWithPoint(dirPath, files) }