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
DDDOriginal
2024-12-07 01:59:151014Durchsuche

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

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
)

Ausführen des Stringer-Befehls:

stringer -type=Pill

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) + ")"
}

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

fmt.Println(Pill(3).String()) // Paracetamol

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!

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