golang filepathWalkDir和filepathWalk区别
filepath.Walk和filepath.WalkDir函数都用于遍历目录树,但是它们之间有一些细微的区别。
filepath.Walk函数的签名如下:
func Walk(root string, walkFn filepath.WalkFunc) error
filepath.Walk函数会递归遍历指定的根目录及其子目录,并对每个文件或目录调用walkFn函数。walkFn函数的签名如下:
type WalkFunc func(path string, info fs.DirEntry, err error) error
walkFn函数会接收三个参数:当前文件或目录的路径,fs.DirEntry类型的对象,以及可能的错误。fs.DirEntry是一个接口类型,提供了文件或目录的基本信息和操作方法。
filepath.WalkDir函数的签名如下:
func WalkDir(root string, walkFn filepath.WalkDirFunc) error
filepath.WalkDir函数与filepath.Walk函数非常相似,但是它使用了filepath.WalkDirFunc类型的回调函数,而不是filepath.WalkFunc类型。filepath.WalkDirFunc的签名如下:
type WalkDirFunc func(path string, d fs.DirEntry, err error) error
filepath.WalkDirFunc函数与filepath.WalkFunc函数非常相似,但是它的第二个参数是fs.DirEntry类型的对象,而不是fs.FileInfo类型的对象。fs.DirEntry类型是一个更轻量级的接口,只提供了文件或目录的基本信息。
总的来说,filepath.Walk和filepath.WalkDir函数的功能非常相似,只是它们使用了不同的回调函数类型。在Go 1.16及更高版本中,推荐使用filepath.WalkDir函数,因为它更高效,并且提供了更轻量级的fs.DirEntry类型。
原文地址: https://www.cveoy.top/t/topic/ixnc 著作权归作者所有。请勿转载和采集!