Version: v3.0.0+incompatible Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Jan 29, 2019 License: MIT, BSD-3-Clause Imports: 9 Imported by: 0



Package fastwalk provides a faster version of filepath.Walk for file system scanning tools.



This section is empty.


View Source
var SkipFiles = errors.New("fastwalk: skip remaining files in directory")

SkipFiles is a used as a return value from WalkFuncs to indicate that the callback should not be called for any other files in the current directory. Child directories will still be traversed.

View Source
var TraverseLink = errors.New("fastwalk: traverse symlink, assuming target is a directory")

TraverseLink is used as a return value from WalkFuncs to indicate that the symlink named in the call may be traversed.


func Walk

func Walk(root string, walkFn func(path string, typ os.FileMode) error) error

Walk is a faster implementation of filepath.Walk.

filepath.Walk's design necessarily calls os.Lstat on each file, even if the caller needs less info. Many tools need only the type of each file. On some platforms, this information is provided directly by the readdir system call, avoiding the need to stat each file individually. fastwalk_unix.go contains a fork of the syscall routines.


Walk walks the file tree rooted at root, calling walkFn for each file or directory in the tree, including root.

If fastWalk returns filepath.SkipDir, the directory is skipped.

Unlike filepath.Walk:

  • file stat calls must be done by the user. The only provided metadata is the file type, which does not include any permission bits.
  • multiple goroutines stat the filesystem concurrently. The provided walkFn must be safe for concurrent use.
  • fastWalk can follow symlinks if walkFn returns the TraverseLink sentinel error. It is the walkFn's responsibility to prevent fastWalk from going into symlink cycles.


This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL