Maison > développement back-end > Golang > le corps du texte

Pourquoi ne puis-je pas utiliser une interface Go avec des contraintes de type dans une conversion ?

Susan Sarandon
Libérer: 2024-11-07 03:36:03
original
253 Les gens l'ont consulté

Why Can't I Use a Go Interface with Type Constraints in a 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!

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