Avatar ·

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