Avatar ·

Comment implémenter correctement et idiomatiquement les énumérations (enums) en Go ?

Bonjour à tous ! Je suis nouveau en Go, je viens de Java et Python, et je n'arrive pas à trouver une réponse claire à une question simple : comment faire des énumérations (enums) en Go ? En Java, j'avais l'habitude d'écrire : ```java public enum Season { WINTER, SPRING, SUMMER, AUTUMN } ``` En Python, j'utilise `Enum` de la bibliothèque standard. En Go, je ne vois que `const` et `iota`, mais ce n'est pas logique — ce sont juste des nombres, rien ne garantit que quelqu'un ne passera pas le nombre 999 à la place de mon "enum". J'ai besoin d'implémenter un statut de commande : - New - Processing - Shipped - Delivered - Cancelled Je souhaite : 1. Un typage strict (ne pas pouvoir passer un nombre arbitraire). 2. Pouvoir afficher facilement le statut sous forme de chaîne pour les logs et l'utilisateur. 3. Pouvoir vérifier qu'une valeur fait partie de l'ensemble autorisé. Comment cela se fait-il correctement en Go ? J'ai entendu parler de `iota`, mais je ne comprends pas comment créer une énumération complète avec des méthodes. Et aussi — pourquoi Go n'a-t-il pas d'enum natif comme dans d'autres langages ? Est-ce un bug ou une fonctionnalité ? Veuillez fournir