常见错误写法:
func main() {
if len(os.Args) != 2 {
os.Exit(-1)
}
root, err := os.Stat(os.Args[1])
if err != nil || !root.IsDir() {
os.Exit(-1)
}
var paths []string
filepath.Walk(os.Args[1], func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info == nil || !info.Mode().IsRegular() {
return nil
}
if !info.IsDir() {
paths = append(paths, path)
}
return nil
})
for _, p := range paths {
f, err := os.Open(p)
if err != nil {
break
}
defer f.Close() //这种f无法关闭,直接去掉defer,或者匿名函数处理for中代码块
}
os.Exit(0)
}