capypad
0 Tage Serie
go / expert
Snippet

Generische Type-Set-Constraints

Type-Sets in Interfaces ermöglichen es Generics, Typen auf eine bestimmte Vereinigung zu beschränken. Der Tilde-Operator (~) schließt Typen ein, die denselben zugrunde liegenden primitiven Typ teilen.

snippet.go
go
1
2
3
4
5
6
7
8
9
10
11
type Number interface {
~int | ~int64 | ~float64
}
 
func Sum[T Number](vals []T) T {
var total T
for _, v := range vals {
total += v
}
return total
}
Erklärung
1
~int | ~int64 | ~float64
Definiert eine Vereinigung erlaubter Typen, einschließlich benutzerdefinierter Typen basierend auf diesen Primitiven.
2
func Sum[T Number]
Eine generische Funktionssignatur, die durch das Number-Interface eingeschränkt ist.