Erstellen Sie eine Enumeration, die aus einer Gruppe verwandter Konstanten in Go
Was wird bevorzugt (oder rechten) Weg zu Gruppe große Anzahl von zugehörigen Konstanten in der Sprache? Zum Beispiel C# und C++ haben beide enum
für diese.
Du musst angemeldet sein, um einen Kommentar abzugeben.
const
?Gibt es zwei Optionen, je nachdem, wie die Konstanten verwendet werden.
Die erste ist eine neue Art basiert auf int, und erklären sich mit den Konstanten der Verwendung dieses neuen Typs, z.B.:
Foo
undBar
über den TypMyFlag
. Wenn Sie möchten, zu extrahieren, die den int-Wert zurück von einerMyFlag
müssen Sie eine Art coersion:Wenn dies ungeeignet ist, verwenden Sie newacct Vorschlag einer bloßen const block:
Foo
undBar
sind perfekt Konstanten zugewiesen werden kann int, float, etc.Dieser bedeckt ist Effektiv Gehen in dem Konstanten Abschnitt. Siehe auch die Diskussion der
iota
Schlüsselwort für die automatische Zuordnung von Werten wie C/C++.Meine Annäherung an enums ist zu deklarieren Konstanten als Typ. Zumindest haben Sie irgendeine Art Sicherheit, die den großen Vorteil einer enum-Typ.
Es hängt davon ab, was Sie erreichen wollen durch diese Gruppierung. Go ermöglicht die Gruppierung mit den folgenden geschweiften Klammern syntax:
Die fügt nur schön visual-block für Programmierer (die Editoren erlauben, es zu Falten), aber ist nichts für einen compiler (Sie können nicht angeben, einen Namen für einen block).
Die einzige Sache, die davon abhängt, ist dieser block der iota-Konstante Erklärung in Gehen (das ist ziemlich praktisch für enums). Es ermöglicht Ihnen das erstellen von auto-Schritten, einfach (weit mehr, als nur auto-Schritten, mehr dazu im link).
Dies zum Beispiel:
erstellen Konstanten
c0 = 3
(3 + 5 * 0),c1 = 8
(3 + 5 * 1) undc2 = 13
(3 + 5 * 2).