Maneira idiomática de representar enumerações (enum) em Go
Olá a todos! Sou novo em Go, vindo de Python e Java, e não consigo encontrar uma maneira adequada de fazer uma enumeração (enum). Em outras linguagens, estou acostumado a escrever algo como:
```python
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
```
Em Go, não há um tipo `enum` embutido. Tentei usar constantes com `const` e `iota`, mas sinto que isso é incompleto. Por exemplo, quero criar um tipo para status de pedido: `New`, `Processing`, `Shipped`, `Delivered`, `Cancelled`. Preciso que:
1. A variável possa aceitar apenas um desses valores.
2. Haja a possibilidade de verificar se o valor é válido.
3. Seria bom ter um método `String()` para uma saída bonita.
4. E que isso seja idiomático, como é aceito na comunidade Go.
Até agora, fiz assim:
```go
package main
import "fmt"
type OrderStatus int
const (
New OrderStatus = iota
Processing
Shipped
Delivered
Cancelled
)
func main() {
status := New
fmt.Println(s