Die Signatur für filepath.walk
ist:
func Walk(root string, walkFn WalkFunc) error
Die Dokumentation besagt, dass es in dem Verzeichnis von root
und der Unterzeichnung der Callback-Funktion (walkFn
) ist angegeben beginnt:
type WalkFunc func(path string, info os.FileInfo, err error) error
So Sie kann den Scan in einem beliebigen Verzeichnis starten und das Dateisystem damit als Root durchlaufen. Sie können nicht mitten durch ein Verzeichnis starten, aber Sie können den Baum, den Sie gerade gehen, selektiv beschneiden.
Es gibt auch einen "magischen" Rückgabewert, filepath.SkipDir
, der entweder ein Verzeichnis (wenn zurückgegeben wird, wenn der Rückruf in einem Verzeichnis aufgerufen wird) oder die restlichen Dateien im Verzeichnis (wenn der Rückruf auf a Datei).
Dies kann genug sein, um das Verhalten, das Sie wollen, zu bekommen, aber es ist ein wenig schwer aus Ihrer Frage zu sagen. Sie können nicht aus einem filepath.Walk
Aufruf ausbrechen und dann später fortsetzen. Allerdings können Sie diese Einschränkung möglicherweise umgehen, indem Sie Gstagloins innerhalb Ihres Rückrufs erstellen, wenn Sie hauptsächlich damit zu tun haben, dass der Rückruf einige Zeit in Anspruch nimmt.