Maison >développement back-end >Golang >Comment puis-je utiliser efficacement les syndicats dans les génériques Go pour la sécurité et la flexibilité des types ?

Comment puis-je utiliser efficacement les syndicats dans les génériques Go pour la sécurité et la flexibilité des types ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-28 22:31:10502parcourir

How Can I Effectively Use Unions in Go Generics for Type Safety and Flexibility?

Unions dans Go Generics

Lorsque vous travaillez avec des génériques dans Go, il est important de comprendre le concept d'unions. Une union est un ensemble de types utilisé dans les contraintes d’interface. Voici un aperçu du problème que vous avez rencontré :

Vous créez une fonction Différence qui renvoie des éléments uniques à partir de plusieurs tranches. Initialement, vous définissez intOrString comme une interface contenant à la fois les types int et string.

Cependant, Go exige que les contraintes d'interface ne soient utilisées que dans les listes de paramètres de type, pas en tant que types. Au lieu de cela, vous devez utiliser intOrString comme contrainte dans les paramètres de type de vos types testDifferenceInput, testDifferenceOutput et testDifference :

type testDifferenceInput[T intOrString] [][]T
type testDifferenceOutput[T intOrString] []T
type testDifference[T intOrString] struct {
    input testDifferenceInput[T]
    output testDifferenceOutput[T]
}

Un autre problème que vous avez rencontré était que la tranche de test contenait différents types de tranche, tels que testDifference[ int] et testDifference[string]. Même si le type testDifference est générique, ses instanciations concrètes ne sont pas interchangeables. Si vous devez conserver différents types de tranches, vous devez soit utiliser []interface{}, soit les séparer en tranches distinctes.

Enfin, rappelez-vous que seules les opérations autorisées par chaque membre de l'ensemble de types de l'union sont autorisées sur contraintes syndicales. Dans le cas de int | chaîne, les opérations autorisées incluent les déclarations de variables, les conversions, les comparaisons, le classement et l'opérateur d'addition.

En suivant ces directives, vous pouvez utiliser efficacement les unions dans votre code générique Go pour améliorer la sécurité et la flexibilité des types.

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:
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