Maison >développement back-end >Golang >Comment puis-je obtenir des noms Go Enum sans écrire de conversions de chaînes explicites ?

Comment puis-je obtenir des noms Go Enum sans écrire de conversions de chaînes explicites ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-07 07:45:17730parcourir

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

Obtention de noms d'énumérations dans Go sans conversion explicite de chaîne

Dans Go, les énumérations sont généralement implémentées sous forme de constantes affectées de valeurs entières. Cependant, accéder au nom de l'énumération sans créer explicitement une méthode String() peut être fastidieux.

Considérez cet exemple :

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

Pour obtenir le nom de l'énumération, on peut définir une String() méthode pour chaque valeur d'énumération, conduisant à une nouvelle saisie répétitive ou à une génération de code. Existe-t-il une alternative ?

Utilisation de l'outil Stringer

Go fournit l'outil Stringer, qui automatise la création de méthodes String() pour les constantes. En exécutant la commande suivante dans le même répertoire que le code ci-dessus :

stringer -type=MERCURY

un nouveau fichier mercury_string.go est généré dans le contexte du package, contenant :

func (MERCURY) String() string

Cette méthode permet récupère facilement le nom de l'énumération et réduit le besoin de conversion de chaîne explicite.

Supplémentaire Remarque :

Bien que cette technique résolve le problème de l'obtention de noms d'énumérations sans méthodes String() explicites, gardez à l'esprit qu'elle nécessite l'utilisation d'un outil externe et n'est pas toujours réalisable dans certains scénarios.

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