Rutas y recorridos en Go
filepath une con el separador correcto y recorre un árbol.
func findGoFiles(root string) ([]string, error) {
var found []string
err := filepath.WalkDir(root, func(path string, entry fs.DirEntry,
err error) error {
if err != nil {
return err
}
if entry.IsDir() && entry.Name() == "vendor" {
return fs.SkipDir
}
if filepath.Ext(path) == ".go" {
found = append(found, filepath.Base(path))
}
return nil
})
if err != nil {
return nil, fmt.Errorf("walk %s: %w", root, err)
}
slices.Sort(found)
return found, nil
}
Cómo funciona
Joinlimpia el resultado; nunca concatenes con una barra.WalkDires el recorrido rápido, que usa entradas de directorio.- Devolver fs.SkipDir poda un subárbol.
Palabras clave y builtins usados aquí
appenderrorfuncifreturnstringvar
El intento, en números
- Líneas
- 21
- Caracteres a escribir
- 448
- Tokens
- 128
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 73 segundos.
Paso 3 de 3 en Archivos e IO; paso 8 de 26 en Biblioteca estándar y estructura del proyecto.