Heim >Backend-Entwicklung >Golang >Wie kann ich Go-Generics-Funktionen mit gemischten Typen in einer Union-Einschränkung effektiv einem Unit-Test unterziehen?
Unions in Go-Generika stellen eine Reihe von Typen dar, die verwendet werden können einen generischen Typparameter einschränken. Sie werden ausschließlich in Schnittstelleneinschränkungen verwendet und geben an, dass ein generischer Typparameter T nur Typen akzeptieren kann, die in der Union enthalten sind.
Beim Schreiben von Unit-Tests für generische Funktionen müssen Sie kann auf die Herausforderung stoßen, mit verschiedenen Typen zu testen. In Ihrem Fall wollten Sie Ihre Differenzfunktion sowohl mit Ints als auch mit Strings innerhalb desselben Tabellentests testen.
Bei Ihrem Versuch, eine intOrString-Schnittstellenbeschränkung zum Testen zu erstellen, ist ein Fehler aufgetreten Fehler, da intOrString kein gültiger Typ ist. Es handelt sich um eine Einschränkung, die den generischen Typparameter T entweder auf int oder string beschränkt. Sie können einen Typ nicht direkt mithilfe einer Typeinschränkung instanziieren.
Anstatt eine intOrString-Einschränkung zu verwenden, sollten Sie Ihre Testeingabe- und -ausgabeabschnitte als generische Typen mit deklarieren intOrString-Einschränkung:
type testDifferenceInput[T intOrString] [][]T type testDifferenceOutput[T intOrString] []T
Dieser Ansatz wird Ihr Problem jedoch nicht vollständig lösen. Ein generischer Container kann keine Elemente unterschiedlichen Typs enthalten. In Ihrem Test-Slice haben Sie zwei unterschiedliche Typen: testDifference[int] und testDifference[string].
Um unterschiedliche Typen in Ihrem Unit-Test zu berücksichtigen, können Sie die trennen Slices nach Typ:
ttInts := []testDifference[int]{ // ... test cases for ints } ttStrs := []testDifference[string]{ // ... test cases for strings }
Union-Einschränkungen begrenzen die Operationen Dies kann für den generischen Typparameter durchgeführt werden. Im Fall von int | Zeichenfolge sind nur Operationen zulässig, die auf beide Typen anwendbar sind, z. B. Vergleiche, Reihenfolge und Addition (nur für Zeichenfolgen).
Das obige ist der detaillierte Inhalt vonWie kann ich Go-Generics-Funktionen mit gemischten Typen in einer Union-Einschränkung effektiv einem Unit-Test unterziehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!