Wie bekomme ich alle Konstanten eines Typs in Go?

8

Hier ist ein Beispiel:

%Vor%

Der Anwendungsfall dafür ist die Erstellung einer endlichen Zustandsmaschine (Finite State Machine, FSM). Die Möglichkeit, alle Konstanten zu erhalten, hilft mir beim Schreiben eines Testfalls, der sicherstellt, dass jeder neue Wert einen entsprechenden Eintrag in der FSM-Map hat.

    
IamLearning 25.08.2017, 20:03
quelle

2 Antworten

5

Wenn Ihre Konstanten alle in einer Reihenfolge sind, können Sie dies verwenden:

%Vor%

Sie können die Ausgabe auch in z.B. %Code%. Dies funktioniert nur, wenn alle Konstanten mit init() der Reihe nach initialisiert werden. Wenn Sie etwas benötigen, das in allen Fällen funktioniert, verwenden Sie ein explizites Slice.

    
Ainar-G 25.08.2017, 20:09
quelle
5

Dies ist zur Laufzeit nicht möglich, da das reflect-Paket nicht dafür verwendet werden kann. Sie könnten eine Liste definieren:

%Vor%

Sie können weiter gehen und eine String-Darstellung oder eine beliebige Anzahl anderer Dinge hinzufügen.

Sie können möglicherweise eine solche Liste aus der Quelle generieren, um die Wartung zu vereinfachen, aber ich denke im Allgemeinen, dass das nicht genug Zeit spart, um es wert zu sein. Es gibt Tools wie Stringer , die das schon machen können.

    
captncraig 25.08.2017 20:09
quelle

Tags und Links