Maison > développement back-end > Golang > Passer un paramètre de type avec des contraintes exactes à une fonction avec ce paramètre ?

Passer un paramètre de type avec des contraintes exactes à une fonction avec ce paramètre ?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-05 23:48:11
avant
672 Les gens l'ont consulté

Passer un paramètre de type avec des contraintes exactes à une fonction avec ce paramètre ?

Contenu de la question

J'ai commencé à utiliser les génériques go et j'ai du mal à comprendre pourquoi ce code ne compile pas :

func f(string) {}

func xyz[T string](p T) {
    f(p) // Error! Cannot use 'p' (type T) as the type string
}
Copier après la connexion

Dans la fonction xyz, pourquoi ne pouvons-nous pas supposer que t a une contrainte de type telle que t soit de type chaîne ?

Je sais que je pourrais simplement écrire f(string(p)), mais je suis toujours intéressé par la réponse à la question.


Bonne réponse


Cela est dû aux règles de assignabilité, qui dans votre cas spécifique est la dernière règle.

v est un paramètre de type, t n'est pas un type nommé , et une valeur de chaque type dans l'ensemble de types de v peut être attribuée à t.

Le type string est un string 是一个命名类型,因此,尽管 t 类型集中的每个类型都可分配给 string,但类型参数 t 本身不可分配给 stringtype nommé

, donc bien que chaque type de l'ensemble de types t soit attribuable à string, les paramètres de type t lui-même n'est pas attribuable à string.

Vous pouvez le comparer aux types sans nom

. 🎜
func f([]string) {}

func xyz[T []string](p T) {
    f(p) // no issue
}
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal