Archivos en Go
Leer un archivo entero, escribir uno, o abrirlo y diferir el cierre.
func writeThenRead(dir string) (string, error) {
path := filepath.Join(dir, "runs.txt")
if err := os.WriteFile(path, []byte("go 104\n"), 0o600); err != nil {
return "", fmt.Errorf("write: %w", err)
}
file, err := os.Open(path)
if err != nil {
return "", fmt.Errorf("open: %w", err)
}
defer file.Close()
info, err := file.Stat()
if err != nil {
return "", fmt.Errorf("stat: %w", err)
}
data, err := io.ReadAll(file)
if err != nil {
return "", fmt.Errorf("read: %w", err)
}
text := strings.TrimSpace(string(data))
return fmt.Sprintf("%d bytes: %s", info.Size(), text), nil
}
Cómo funciona
os.ReadFileyos.WriteFilecubren los casos simples.defer file.Close()va justo después del chequeo de error.- El argumento de modo importa en la ruta de escritura.
Palabras clave y builtins usados aquí
bytedefererrorfuncifreturnstring
El intento, en números
- Líneas
- 24
- Caracteres a escribir
- 575
- Tokens
- 173
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 99 segundos.
Paso 2 de 3 en Archivos e IO; paso 7 de 26 en Biblioteca estándar y estructura del proyecto.