Avatar ·

Manière idiomatique de représenter les énumérations (enum) en Go

Bonjour à tous ! Je suis nouveau en Go, je viens de Python et Java, et je n'arrive pas à trouver un moyen correct de faire une énumération (enum). Dans d'autres langages, j'ai l'habitude d'écrire quelque chose comme : ```python class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 ``` En Go, il n'y a pas de type `enum` intégré. J'ai essayé d'utiliser des constantes avec `const` et `iota`, mais je sens que ce n'est pas complet. Par exemple, je veux créer un type pour le statut d'une commande : `New`, `Processing`, `Shipped`, `Delivered`, `Cancelled`. J'ai besoin que : 1. Une variable puisse prendre uniquement l'une de ces valeurs. 2. Il soit possible de vérifier si une valeur est valide. 3. Avoir une méthode `String()` pour un affichage agréable. 4. Et que ce soit idiomatique, comme c'est l'usage dans la communauté Go. Pour l'instant, j'ai fait ceci : ```go package main import "fmt" type OrderStatus int const ( New OrderStatus = iota Processing Shipped Delivered Cancelled ) func main() { status := New fmt.Println(s