Cómo implementar correcta e idiomáticamente enumeraciones (enums) en Go?
¡Hola a todos! Soy nuevo en Go, vengo de Java y Python, y no puedo encontrar una respuesta clara a una pregunta simple: ¿cómo hacer enumeraciones (enums) en Go?
En Java estoy acostumbrado a escribir:
```java
public enum Season {
WINTER, SPRING, SUMMER, AUTUMN
}
```
En Python uso `Enum` de la biblioteca estándar. Pero en Go solo veo `const` e `iota`, pero eso no es muy lógico — solo números, no hay garantía de que alguien no pase el número 999 en lugar de mi "enum".
Necesito implementar un estado de pedido:
- New
- Processing
- Shipped
- Delivered
- Cancelled
Me gustaría que:
1. Hubiera tipado estricto (no se pueda pasar un número arbitrario).
2. Fuera conveniente mostrar el estado como string para logs y usuario.
3. Hubiera una forma de verificar que el valor está dentro del conjunto permitido.
¿Cómo se hace esto correctamente en Go? He oído sobre `iota`, pero no entiendo cómo hacer un enum completo con métodos. Y también — ¿por qué Go no tiene un enum nativo como otros lenguajes? ¿Es un bug o una feature?
Por favor, denme
No answers yet.
Inicia sesión para dejar una respuesta