Heim > Backend-Entwicklung > Golang > Wie kann ich den Namen einer Go-Enumeration abrufen, ohne manuell eine „String()'-Methode zu definieren?

Wie kann ich den Namen einer Go-Enumeration abrufen, ohne manuell eine „String()'-Methode zu definieren?

DDD
Freigeben: 2024-12-07 01:59:15
Original
1010 Leute haben es durchsucht

How Can I Retrieve the Name of a Go Enum Without Manually Defining a `String()` Method?

Ist es möglich, den Namen einer Aufzählung zu erhalten, ohne die Methode String() in Golang hinzuzufügen?

Um in Go den Namen einer Aufzählung zu erhalten, ist normalerweise eine Definition erforderlich eine String-Methode func (TheEnum) String(). Dies kann jedoch mühsam sein, insbesondere wenn es viele Aufzählungen gibt.

Eine Alternative besteht darin, das Stringer-Tool von Go aus dem Standard-Tools-Paket zu verwenden. Dies kann durch Ausführen des folgenden Befehls im selben Verzeichnis wie Ihre Enum-Definition erfolgen:

stringer -type=Pill
Nach dem Login kopieren
Nach dem Login kopieren

Dadurch wird eine Datei erstellt, die eine Definition einer func (Pill) String()-String-Methode enthält.

package painkiller

type Pill int

const (
    Placebo Pill = iota
    Aspirin
    Ibuprofen
    Paracetamol
    Acetaminophen = Paracetamol
)
Nach dem Login kopieren

Ausführen des Stringer-Befehls:

stringer -type=Pill
Nach dem Login kopieren
Nach dem Login kopieren

Erstellt Folgendes Datei:

// Code generated by "stringer -type=Pill"; DO NOT EDIT.

package painkiller

import "strconv"

func (p Pill) String() string {
    switch p {
    case Placebo:
        return "Placebo"
    case Aspirin:
        return "Aspirin"
    case Ibuprofen:
        return "Ibuprofen"
    case Paracetamol:
        return "Paracetamol"
    case Acetaminophen:
        return "Acetaminophen"
    }
    return "Pill(" + strconv.FormatInt(int64(p), 10) + ")"
}
Nach dem Login kopieren

Diese Methode kann dann verwendet werden, um den Namen einer Aufzählung abzurufen, zum Beispiel:

fmt.Println(Pill(3).String()) // Paracetamol
Nach dem Login kopieren

Das Stringer-Tool kann mit dem Befehl go generic in Go verwendet werden 1.4, um für jede Aufzählung automatisch eine String-Methode func (TheEnum) String() zu generieren.

Das obige ist der detaillierte Inhalt vonWie kann ich den Namen einer Go-Enumeration abrufen, ohne manuell eine „String()'-Methode zu definieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage