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 }
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.
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
本身不可分配给 string
type nommé
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 }
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!