package main

import (
	"fmt"
	"io/ioutil"
	"strings"
)

// 传入扩展名列表,返回指定扩展名的文件名列表
func GetFileNames(expNameList []string) []string {
	var fileNameList []string                       // 文件名列表
	files, err := ioutil.ReadDir("./")              // 读取目录下所有文件
	if err != nil {
		fmt.Println("目录错误!")
	}
	for _, file := range files {                       // 循环遍历文件名
		if !file.IsDir() {                             // 不是目录,是文件
			fileName := file.Name()                    // 获取文件名
			fileNames := strings.Split(fileName, ".")  // 分割文件名与扩展名
			expName := fileNames[len(fileNames)-1]     // 获取文件扩展名
			for _, exp := range expNameList {          // 循环遍历扩展名列表
				if strings.EqualFold(exp, expName) {   // 文件扩展名在扩展名列表中
                    // 将文件名添加到文件名列表
					fileNameList = append(fileNameList, fileName) 
					break                               // 已经符合,退出内层循环
				}
			}
		}
	}
	return fileNameList          // 返回文件名列表
}

func main() {
	var expNameList []string     // 扩展名列表
	var expName string           // 用于输入单个扩展名
	for {                        // 循环输入多个扩展名
		fmt.Print("\n请输入一个扩展名后回车(“11” 完成输入):")
		fmt.Scanln(&expName)     // 输入扩展名
		if expName == "11" {     // 输入11完成扩展名输入
			break
		}
		expNameList = append(expNameList, expName) // 将扩展名添加到扩展名列表
		fmt.Print("您输入的扩展名为:")
		for _, exp := range expNameList {          // 显示输入的扩展名
			fmt.Print(exp, "    ")   
		}
	}

	fileNameList := GetFileNames(expNameList)
	fmt.Println("\n显示所有文件名:")
	for _, fileName := range fileNameList {        // 显示符合条件的文件名
		fmt.Print(fileName, "    ")
	}
}