Heim >Backend-Entwicklung >Golang >Wie kann ich Go-Enum-Namen erhalten, ohne explizite String-Konvertierungen zu schreiben?

Wie kann ich Go-Enum-Namen erhalten, ohne explizite String-Konvertierungen zu schreiben?

Barbara Streisand
Barbara StreisandOriginal
2024-12-07 07:45:17737Durchsuche

How Can I Get Go Enum Names Without Writing Explicit String Conversions?

Enum-Namen in Go ohne explizite String-Konvertierung abrufen

In Go werden Enums typischerweise als Konstanten implementiert, denen ganzzahlige Werte zugewiesen werden. Der Zugriff auf den Enum-Namen ohne explizite Erstellung einer String()-Methode kann jedoch umständlich sein.

Betrachten Sie dieses Beispiel:

const (
    MERCURY = 1
    VENUS = iota
    EARTH
    MARS
    JUPITER
    SATURN
    URANUS
    NEPTUNE
    PLUTO
)

Um den Enum-Namen zu erhalten, kann man eine String() definieren Methode für jeden Enum-Wert, was zu wiederholter Neueingabe oder Codegenerierung führt. Gibt es eine Alternative?

Verwendung des Stringer-Tools

Go bietet das Stringer-Tool, das die Erstellung von String()-Methoden für Konstanten automatisiert. Durch Ausführen des folgenden Befehls im selben Verzeichnis wie der obige Code:

stringer -type=MERCURY

Eine neue Datei mercury_string.go wird im Paketkontext generiert, die Folgendes enthält:

func (MERCURY) String() string

Diese Methode ermöglicht Bequemes Abrufen des Enum-Namens und Reduzierung der Notwendigkeit einer expliziten String-Konvertierung.

Zusätzlich Hinweis:

Obwohl diese Technik das Problem des Erhaltens von Enum-Namen ohne explizite String()-Methoden löst, bedenken Sie, dass sie die Verwendung eines externen Tools erfordert und in bestimmten Szenarien möglicherweise nicht immer durchführbar ist.

Das obige ist der detaillierte Inhalt vonWie kann ich Go-Enum-Namen erhalten, ohne explizite String-Konvertierungen zu schreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn