Maison >développement back-end >Golang >Pourquoi ne puis-je pas attribuer un type générique à un autre en Go, même si leurs arguments de type sont compatibles ?
Dans Go, un générique ne peut pas être attribué à un autre même si leurs arguments de type peuvent être dus à la nature de l'instanciation générique.
Types génériques dans Go
Les types génériques autorisent pour la réutilisation du code en définissant un modèle pouvant être utilisé avec différents types de données. Lorsque vous instanciez un type générique, vous fournissez des arguments de type concrets pour spécifier le type de données spécifique utilisé.
Restrictions d'affectation
L'attribution d'une valeur d'un type générique à un autre peut ne soit pas toujours autorisé. En effet, l'instanciation d'un type générique avec des arguments de type différents donne lieu à deux types nommés distincts.
Par exemple :
type Props[G Generic] struct{} type Example struct{} func (Example) ID() string { return "" } var ExampleProps = Props[Example]{} func Problem() Props[Generic] { return ExampleProps // Compilation error }
Dans cet exemple, Exemple implémente l'interface générique. Cependant, Props[Example] et Props[Generic] sont toujours considérés comme des types différents. Par conséquent, l'attribution de SampleProps (qui est de type Props[Example]) à Problem (qui renvoie Props[Generic]) n'est pas autorisée.
Résolution
Si vous le souhaitez pour attribuer des valeurs entre types génériques, vous pouvez instancier le type générique avec un paramètre de type. Par exemple :
func Problem[T Generic](v T) Props[T] { return Props[T]{Value: v} }
Dans ce cas, Problem prend un paramètre générique T et instancie Props avec T. Cela permet plus de flexibilité et peut être utilisé dans des situations où les arguments de type répondent à des conditions spécifiques.
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!