Avatar ·

Cómo verificar si un archivo existe en Go

¡Hola a todos! Soy un desarrollador Go principiante y estoy escribiendo una pequeña herramienta para procesar logs. Necesito verificar si un archivo existe en el disco antes de abrirlo. En Python estoy acostumbrado a os.path.exists(), pero en Go no puedo encontrar un equivalente.

Probé usar os.Stat(), pero no estoy seguro de que sea correcto. Aquí está mi código actual:

package main

import (
    "fmt"
    "os"
)

func main() {
    path := "/tmp/myfile.log"
    // ¿Cómo verificar si el archivo existe?
    _, err := os.Stat(path)
    if err == nil {
        fmt.Println("¡El archivo existe!")
    } else {
        fmt.Println("¡El archivo no existe!")
    }
}

El problema es que os.Stat() devuelve un error no solo cuando el archivo no existe, sino también en otros problemas — por ejemplo, falta de permisos de acceso. Obtengo falsos positivos. ¿Cómo escribir correctamente la verificación? ¿Necesito usar os.IsNotExist()? ¿O hay algún método especial en la biblioteca estándar?