Avatar ·

Como verificar nil em Go corretamente: interfaces, structs e ponteiros

Olá, colegas! Sou um desenvolvedor Go iniciante e me deparei com um problema muito estranho ao verificar nil. Tenho uma função que retorna uma interface error, e estou tentando verificar se ocorreu um erro. Mas meu código se comporta de forma inesperada. Aqui está um exemplo simplificado: ```go type MyError struct { Code int Msg string } func (e *MyError) Error() string { return fmt.Sprintf("error %d: %s", e.Code, e.Msg) } func doSomething() error { var err *MyError = nil // ... alguma lógica, mas err permanece nil return err } func main() { err := doSomething() if err != nil { fmt.Println("Tem erro:", err) } else { fmt.Println("Sem erro") } } ``` Eu espero que o programa imprima "Sem erro", porque estou retornando nil