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ç