Maison >développement back-end >Golang >Pouvez-vous stocker différents types de données dans un seul champ de structure dans Go ?
Déclaration et utilisation de champs de structure pour plusieurs types de données dans Go
Dans Go, vous pouvez définir une structure pour représenter les données associées. Cependant, que se passe-t-il si vous souhaitez qu'un champ de structure puisse stocker à la fois des valeurs de chaîne et des valeurs int ?
Pour mieux comprendre ce problème, considérez la structure suivante :
type testCase struct { input string isValid bool }
Cette structure est conçue pour stocker un scénario de test où input est une chaîne et isValid est un booléen. Dans certains scénarios, vous souhaiterez peut-être autoriser l'entrée à être une chaîne ou un entier.
Au départ, vous pourriez envisager de convertir l'entrée int en chaîne et de nouveau en int pendant le traitement. Cependant, cette approche est inefficace et sujette aux erreurs.
Une autre option pourrait consister à définir deux structures distinctes, telles que testCaseInt et testCaseStruct. Cela résoudrait le problème, mais cela entraînerait une duplication de code inutile.
Est-il possible de stocker différents types de données dans un seul champ de structure à l'aide d'une interface ?
Non , ce n'est pas possible dans les versions Go antérieures à la 1.18. Le système de types de Go ne prend pas en charge les types de somme, qui sont des types pouvant représenter plusieurs variantes de données.
Dans Go 1.18, les types de somme seront pris en charge grâce à l'introduction de génériques. Cependant, jusque-là, il n'existe aucun moyen intégré pour obtenir cette fonctionnalité.
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!