Avatar ·

Forma idiomática de representar enumeraciones (enum) en Go

¡Hola a todos! Soy nuevo en Go, vengo de Python y Java, y no encuentro una forma adecuada de hacer una enumeración (enum). En otros lenguajes estoy acostumbrado a escribir algo como: ```python class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 ``` En Go no hay un tipo `enum` incorporado. Intenté usar constantes con `const` e `iota`, pero siento que es incompleto. Por ejemplo, quiero crear un tipo para el estado de un pedido: `New`, `Processing`, `Shipped`, `Delivered`, `Cancelled`. Necesito que: 1. La variable pueda tomar solo uno de estos valores. 2. Haya una forma de verificar si el valor es válido. 3. Sería bueno tener un método `String()` para una salida bonita. 4. Y que sea idiomático, como se acostumbra en la comunidad de Go. Por ahora hice esto: ```go package main import "fmt" type OrderStatus int const ( New OrderStatus = iota Processing Shipped Delivered Cancelled ) func main() { status := New fmt.Println(s