Ich fange an zu lernen Go nach anderen Sprachen. Go hat eine sehr elegant way of creating constants mit numerischen Werten wie:Die beste Methode zum Aufzählen von Konstanten in Go
const (
_ = iota // 0 and is skipped
Sunday // 1
Monday // 2
...
)
Dies ist sehr einfach zu schreiben, aber es ist wirklich einfach zu warten? Wenn Sie z. B. plötzlich einen neuen Wert zwischen "vorhanden" einfügen, ändern alle nachfolgenden Werte ihre Werte. Und es wird schwer zu finden sein, nur peinliches Diff-Lesen kann es offenbaren. Oder Fehler an anderen Teilen. Wie kann ich diese Werte mit Namen extrahieren und in anderen Teilen eines Programms oder in der Datenbank verwenden? Zum Beispiel für PostgreSQL kann ich definieren:
CREATE TYPE color AS ENUM ('', 'Sunday', 'Monday');
nur eine Idee zu illustrieren. Zum Beispiel Python has Enum Typ:
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
Dann können Sie es wie Color.RED
verwenden. Weiter kann ich alle Werte annehmen:
list(Color)
[<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]
Das bin ich „introspect“ Modul und erstellen leicht lesbare Aufzählungen in Datenbanken ermöglicht. Zum Beispiel für PostgreSQL kann ich definieren:
CREATE TYPE color AS ENUM ('RED', 'GREEN', 'BLUE');
Wie kann ich:
- Gelegt golang Konstanten Namen?
- Fehlerhafte Konstanten, die ihre Werte nicht abweichen lassen können? Nur manuell beheben?
- Vielleicht gibt es einen idiomatischen Weg, es besser zu machen?
Danke.
Der Wert sollte nicht wichtig sein, wenn sie sich ändern, weil Sie die Konstanten _only_ namentlich verwenden sollten. Das ist ein Hauptgrund dafür, die Konstanten so zu deklarieren, anstatt die Literalwerte zu verwenden. – JimB
Ja, während alle Werte in einem Programm sind, spielen sie keine Rolle. Aber ich möchte sie in anderen verwenden, und deshalb muss ich einige numerische Werte übersetzen. Sobald ich sie benutzt habe, kann ich sie nicht ändern. Oder versuchen Sie total Zahlen zu vermeiden und nur an Strings zu hängen? Thx –