Maison > Article > développement back-end > Pourquoi ne puis-je pas utiliser une interface Go avec des contraintes de type dans une conversion ?
Comprendre les contraintes de type dans les interfaces Go
Les interfaces Go sont des outils puissants pour extraire les types de données et promouvoir la réutilisation du code. Cependant, l'utilisation des interfaces est contrainte par certaines règles, dont l'une est l'interdiction des interfaces contenant des éléments de type.
Dans l'extrait de code donné, l'erreur "l'interface contient des contraintes de type : impossible d'utiliser l'interface Numéro en conversion " découle de cette restriction. L'interface Number, définie comme type Number interface { int | int64 | float64 }, définit une union de trois types spécifiques. Cela fait de Number une interface non basique, ce qui signifie qu'elle ne peut pas être utilisée comme type de valeur ou de variable.
La spécification du langage interdit l'utilisation d'interfaces non basiques dans les conversions de type ou comme éléments d'autres types. La variable a ne peut pas être initialisée comme []Number{Number(1), Number(2), Number(3), Number(4)} car Number ne peut pas être utilisé pour construire une nouvelle valeur.
Pour surmonter cette limitation, vous pouvez utiliser le type interface{}, qui peut contenir des valeurs de n'importe quel type. La variable aa est créée avec succès sous la forme []interface{}{interface{}(1), interface{}(2), interface{}(3), 4} car les éléments ne sont pas limités par les contraintes de type de Number.
Vous pouvez également définir une interface sans contraintes de type, telle que NNumber, et l'utiliser pour créer des tranches de type sécurisé. La variable aaa est initialisée comme []NNumber{NNumber(1), NNumber(2), NNumber(3), 4} sans erreurs car NNumber ne contient pas de restrictions de type.
En comprenant les concepts de base et interfaces non basiques et les limitations qui les entourent, vous pouvez utiliser efficacement les interfaces Go tout en évitant les problèmes potentiels liés aux contraintes de type.
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!