Contraintes de type d'interface : comprendre l'erreur « Contraintes de type »
Dans Go, les interfaces peuvent servir de contraintes de type pour restreindre les types qui peuvent satisfaire eux. Cependant, certaines interfaces, y compris celles contenant des contraintes de type, sont confrontées à des limitations d'utilisation.
Comprendre les contraintes de type
Les contraintes de type font référence aux interfaces qui contiennent des éléments de type, tels que les unions. ou des types intégrés comparables. Ces interfaces sont considérées comme non basiques et ne peuvent pas être utilisées comme types réels pour des valeurs ou des variables ou dans le cadre de types non-interfaces.
Exemple :
Considérez ce qui suit interface avec une contrainte de type :
type Number interface { int | int64 | float64 }
Restriction sur l'initialisation de tranche
Une interface avec des contraintes de type, telles que Number, ne peut pas être utilisée pour initialiser directement une tranche. Par exemple, la ligne suivante générerait une erreur :
a := []Number{Number(1), Number(2), Number(3), Number(4)}
Raison de l'erreur
L'erreur "l'interface contient des contraintes de type : impossible d'utiliser l'interface dans la conversion" découle de la nature non basique de l’interface Number. Les interfaces avec des contraintes de type ne peuvent être utilisées que dans deux scénarios spécifiques :
Exemple d'utilisation autorisée
Au lieu d'initialiser directement une tranche de Number, nous pouvons utiliser la contrainte de paramètre de type suivante :
type Coordinates[T Number] struct { x, y T }
Conclusion
Les interfaces avec des contraintes de type servent un objectif spécifique dans Go. Comprendre leurs limites et leur utilisation appropriée est crucial pour éviter les erreurs et garantir le bon comportement du programme.
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!