Maison > développement back-end > Golang > Comment puis-je instancier des types Go à partir de chaînes ?

Comment puis-je instancier des types Go à partir de chaînes ?

Susan Sarandon
Libérer: 2024-12-21 08:45:11
original
633 Les gens l'ont consulté

How Can I Instantiate Go Types from Strings?

Création de nouvelles instances de types à partir de chaînes dans Go

Dans Golang, vous pouvez rencontrer des scénarios dans lesquels vous devez créer de nouvelles instances de types en fonction de leurs noms stockés sous forme de chaînes . Même si cela était autrefois possible dans les anciennes versions de Go, ce n'est plus simple.

Réflexions et typage statique

Go est un langage typé statiquement, ce qui signifie que le compilateur vérifie et applique les types de données à temps de compilation. Cela garantit la sécurité des types, mais signifie également que la création de nouvelles instances à partir de noms de types de chaînes n'est pas directement prise en charge.

Utiliser la réflexion

Pour y parvenir, vous pouvez envisager d'utiliser la réflexion, qui fournit un moyen pour inspecter et manipuler des objets au moment de l'exécution. Cependant, les réflexions peuvent être complexes et introduire des pénalités de performances.

Maintenir une carte de type globale

Une approche utilisant les réflexions consiste à maintenir une carte globale[string]reflect.Type. Cette carte peut être initialisée dans la fonction init() des packages concernés, garantissant que le compilateur inclut les types nécessaires dans l'exécutable.

Vous pouvez ensuite utiliser cette carte pour rechercher le reflet.Type du type souhaité et créez une nouvelle instance en utilisant Reflect.New. Pour extraire l'objet dans une interface, utilisez Reflect.New(yourtype).Elem().Interface().

Approches alternatives

Vous pouvez également envisager d'explorer une meilleure structuration du programme qui évite d'avoir besoin de reflets. Par exemple, utiliser des méthodes d'usine ou maintenir une interface map[string]func(){} avec des fonctions de création pour différents types peut fournir des solutions plus simples et plus efficaces.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal