Avatar ·

Como verificar se um arquivo existe em Go? (sem corridas de dados desnecessárias)

Olá a todos! Acabei de começar a aprender Go e me deparei com uma tarefa simples, à primeira vista: preciso verificar se um arquivo existe no disco antes de lê-lo ou escrevê-lo. Em Python, eu costumava fazer assim: ```go import os if os.path.exists("myfile.txt"): print("Arquivo existe") ``` Mas em Go não encontrei uma função tão simples. Na documentação do pacote `os` existe a função `Stat()`, que retorna um erro se o arquivo não existir. Escrevi o seguinte código: ```go package main import ( "fmt" "os" ) func main() { _, err := os.Stat("myfile.txt") if err != nil { if os.IsNotExist(err) { fmt.Println("Arquivo não existe") } else { fmt.Println("Ocorreu outro erro:", err) } } else { fmt.Println("Arquivo existe") } } ``` Parece funcionar, mas me incomoda que na documentação de Go frequentemente dizem que verificar a existência antes de ler/escrever é um antipadrão, pois entre a verificação e a operaç