Avatar ·

Idiomatischer Weg zur Darstellung von Aufzählungen (enum) in Go

Hallo zusammen! Ich bin neu in Go, komme von Python und Java und finde einfach keinen vernünftigen Weg, eine Aufzählung (enum) zu erstellen. In anderen Sprachen bin ich es gewohnt, so etwas zu schreiben: ```python class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 ``` In Go gibt es keinen eingebauten Typ `enum`. Ich habe versucht, Konstanten mit `const` und `iota` zu verwenden, aber ich habe das Gefühl, dass dies nicht vollständig ist. Zum Beispiel möchte ich einen Typ für den Bestellstatus erstellen: `New`, `Processing`, `Shipped`, `Delivered`, `Cancelled`. Ich brauche: 1. Eine Variable soll nur einen dieser Werte annehmen können. 2. Es soll möglich sein zu überprüfen, ob ein Wert gültig ist. 3. Es wäre gut, eine Methode `String()` für eine schöne Ausgabe zu haben. 4. Und es soll idiomatisch sein, wie es in der Go-Community üblich ist. Bisher habe ich das so gemacht: ```go package main import "fmt" type OrderStatus int const ( New OrderStatus = iota Processing Shipped Delivered Cancelled ) func main() { status := New fmt.Println(s