type sets).
package main
type Number interface { ~int | ~int64 | ~float64 }
func Sum[T Number](xs []T) T { var s T for _, v := range xs { s += v } return s }
Wariancja i (nie)zmienniczość Relacja podtypów dla typów generycznych zależy od języka i konstrukcji: w podejściu „niezmienniczym” () Lista<Kot> nie jest podtypem Lista<Zwierzę> (nawet jeśli Kot jest podtypem Zwierzę), co w Javie uzasadniano m.in. zachowaniem bezpieczeństwa typów dla typów parametryzowanych; platforma .NET rozróżnia także wariancję (kowariancję i kontrawariancję) dla wybranych typów generycznych (np. interfejsów i delegatów), a dokumentacja definiuje pojęcia kowariancji, kontrawariancji i niezmienniczości w kontekście generics.
Zobacz też Programowanie generyczne Polimorfizm parametryczny Szablon (C++) Teoria typów
Przypisy
Kategoria:Typy danych