Avatar ·

Comment vérifier correctement nil en Go : interfaces, structures et pointeurs

Bonjour, collègues ! Je suis un développeur Go débutant et j'ai rencontré un problème très étrange lors de la vérification de nil. J'ai une fonction qui retourne une interface error, et j'essaie de vérifier si une erreur s'est produite. Mais mon code se comporte de manière inattendue. Voici un exemple simplifié : ```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 // ... une certaine logique, mais err reste nil return err } func main() { err := doSomething() if err != nil { fmt.Println("Il y a une erreur :", err) } else { fmt.Println("Pas d'erreur") } } ``` Je m'attends à ce que le programme affiche "Pas d'erreur", car je retourne nil. Mais il affiche "Il y a une erreur : ". Pourquoi cela se produit-il ? Comment vérifier correctement nil en Go ? J'ai entendu dire que cela est lié à la façon dont les interfaces fonctionnent, mais je ne comprends pas les détails. Je vous serais reconnaissant pour votre aide.