Les unions génériques dans Go représentent un ensemble de types qui peuvent être utilisés pour contraindre un paramètre de type générique. Ils sont uniquement employés dans les contraintes d'interface, indiquant qu'un paramètre de type générique T ne peut accepter que les types inclus dans l'union.
Lors de l'écriture de tests unitaires pour des fonctions génériques, vous peut rencontrer le défi de tester avec différents types. Dans votre cas, vous aviez pour objectif de tester votre fonction Difference avec des entiers et des chaînes dans le même test de table.
Votre tentative de création d'une contrainte d'interface intOrString pour tester a rencontré un erreur car intOrString n’est pas un type valide. Il s'agit d'une contrainte qui restreint le paramètre de type générique T à un entier ou à une chaîne. Vous ne pouvez pas instancier directement un type à l'aide d'une contrainte de type.
Au lieu d'utiliser une contrainte intOrString, vous devez déclarer vos tranches d'entrée et de sortie de test comme types génériques avec le Contrainte intOrString :
type testDifferenceInput[T intOrString] [][]T type testDifferenceOutput[T intOrString] []T
Cependant, cette approche ne résoudra pas entièrement votre problème. Un conteneur générique ne peut pas contenir d'éléments de types différents. Dans votre tranche de test, vous avez deux types distincts : testDifference[int] et testDifference[string].
Pour prendre en compte différents types dans votre test unitaire, vous pouvez séparer les tranches par type :
ttInts := []testDifference[int]{ // ... test cases for ints } ttStrs := []testDifference[string]{ // ... test cases for strings }
Les contraintes d'union limitent les opérations qui peuvent être effectuée sur le paramètre de type générique. Dans le cas de int | chaîne, seules les opérations applicables aux deux types sont autorisées, telles que les comparaisons, le classement et l'addition (uniquement pour les chaînes).
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!