测试平台:CentOS7.2
代码:
package main
import (
"os"
"fmt"
"path/filepath"
)
func main(){
path:="/opt/test"
handlefunc:=func(file_path string , f os.FileInfo , err error) error{
fmt.Println("I am ",file_path)
if f.IsDir(){
//os.Remove(file_path)
//fmt.Println("Empty Dir , deleted !")
}
fmt.Println("\n")
return nil
}
fi , _ := os.Stat(path)
if fi.IsDir(){
filepath.Walk(path,handlefunc)
}
}
目录 /opt/test的结构如下
注意上面的代码有两行被注释掉了,这种情况下我得到了想要的输出:
然而我把注释打开再运行之后,竟然出现这样的输出:
【问题】
发现没,空目录'/opt/one/two'被打印了两次,明明第一次被删除了才对,为什么会出现这样的情况???
下面代码是filepath.Walk的实现源码
从代码看出内部使用的是递归
直接看最底层目录 /opt/test/one/two
walk传入path=/opt/test/one/two
看我给加的代码注释应该就明白了
不明白在问我。