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 ?

WBOY
Libérer: 2024-02-05 23:48:11
avant
643 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!

source:stackoverflow.com
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