Maison >développement back-end >Golang >Comment puis-je utiliser des méthodes partagées avec des contraintes de type d'union dans Go Generics ?
Contraintes génériques dans Go : utilisation de méthodes partagées pour les types d'union
Dans les génériques Go (v1.18), une contrainte d'union de type vous permet pour définir un ensemble de types pouvant être affectés à un paramètre de type générique. Cependant, l'utilisation d'une méthode partagée pour ces types peut entraîner des erreurs.
Considérez le code suivant :
type A struct {} type B struct {} type AB interface { *A | *B } func (a *A) some() bool { return true } func (b *B) some() bool { return false } func some[T AB](x T) bool { return x.some() // <- error }
L'erreur se produit car le compilateur ne trouve pas la méthode some sur le type d'union AB. . Pour résoudre ce problème, vous devez ajouter la méthode à la contrainte d'interface :
type AB interface { *A | *B some() bool } func some[T AB](x T) bool { return x.some() // works }
Cela restreint le type générique T aux types qui implémentent à la fois *A et *B, et définit également la méthode some.
Cependant, comme indiqué dans les notes de version de Go 1.18, il s'agit d'une limitation temporaire. Go 1.19 devrait supprimer cette restriction, permettant au compilateur de déduire automatiquement la méthode some à partir du type union.
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!