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 ?

Pourquoi ne puis-je pas attribuer un type générique à un autre en Go, même si leurs arguments de type sont compatibles ?

DDD
Libérer: 2025-01-04 12:30:33
original
700 Les gens l'ont consulté

Why Can't I Assign One Generic Type to Another in Go, Even If Their Type Arguments Are Compatible?

Comprendre les restrictions d'attribution de types génériques

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
}
Copier après la connexion

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}
}
Copier après la connexion

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!

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