Maison >développement back-end >Golang >Comment puis-je récupérer le nom d'une énumération Go sans définir manuellement une méthode `String()` ?

Comment puis-je récupérer le nom d'une énumération Go sans définir manuellement une méthode `String()` ?

DDD
DDDoriginal
2024-12-07 01:59:151016parcourir

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

Est-il possible d'obtenir le nom d'une énumération sans ajouter la méthode String() dans Golang

Dans Go, pour obtenir le nom d'une énumération, il est généralement nécessaire de définir une méthode de chaîne func (TheEnum) String(). Cependant, cela peut être fastidieux, surtout s'il y a de nombreuses énumérations.

Une alternative consiste à utiliser l'outil stringer de Go du package d'outils standard. Cela peut être fait en exécutant la commande suivante dans le même répertoire que votre définition d'énumération :

stringer -type=Pill

Cela créera un fichier contenant une définition d'une méthode de chaîne func (Pill) String().

package painkiller

type Pill int

const (
    Placebo Pill = iota
    Aspirin
    Ibuprofen
    Paracetamol
    Acetaminophen = Paracetamol
)

Exécuter la commande stringer :

stringer -type=Pill

Crée ce qui suit file:

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

Cette méthode peut ensuite être utilisée pour obtenir le nom d'une énumération, par exemple :

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

L'outil stringer peut être utilisé avec la commande go generate dans Go 1.4 pour générer automatiquement une méthode de chaîne func (TheEnum) String() pour chaque énumération.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn