Avatar ·

Wie implementiert man Enums in Go richtig und idiomatisch?

Hallo zusammen! Ich bin neu in Go, komme von Java und Python und finde keine klare Antwort auf eine einfache Frage: Wie macht man Enums in Go?\n\nIn Java habe ich geschrieben:\n\n```java\npublic enum Season {\n WINTER, SPRING, SUMMER, AUTUMN\n}\n```\n\nIn Python verwende ich `Enum` aus der Standardbibliothek. Aber in Go sehe ich nur `const` und `iota`, aber das ist irgendwie unlogisch – nur Zahlen, keine Garantie, dass jemand nicht die Zahl 999 anstelle meines "Enums" übergibt.\n\nIch muss einen Bestellstatus implementieren:\n\n- New\n- Processing\n- Shipped\n- Delivered\n- Cancelled\n\nIch möchte:\n\n1. Strenge Typisierung (keine beliebigen Zahlen übergeben können).\n2. Bequeme Ausgabe des Status als String für Logs und Benutzer.\n3. Möglichkeit zu prüfen, ob ein Wert zur erlaubten Menge gehört.\n\nWie macht man das richtig?