path = "C:\\wahaha"
key = ".go"
func CountLineNum(path, key string) (count int) {
files, err := ioutil.ReadDir(path)
if err == nil {
for _, fileInfo := range files {
newPath := path + "\\" + fileInfo.Name()
if fileInfo.IsDir() {
count += CountLineNum(newPath, key)
} else if strings.Contains(fileInfo.Name(), key) {
file, err := os.Open(newPath)
if err == nil {
fileBuf := bufio.NewReader(file)
lineSum := 0
for {
_, err := fileBuf.ReadString('\n')
lineSum++
if err == io.EOF {
break
}
}
file.Close()
count += lineSum
}
}
}
}
return count
}