Welke middelen voor generieke programmering bestaan er?
sobes.tech AI
Antwoord van AI
In Golang bestaan de volgende middelen voor generiek programmeren:
-
Getypeerde types: Hiermee kunnen structuren, interfaces en functies worden gemaakt die met verschillende datatypes kunnen werken zonder deze strikt aan te geven tijdens compilatie. De datatypes worden tussen vierkante haakjes na de naam van het type of de functie aangegeven.
// Voorbeeld van een structuur met een getypeerd type type Stack[T any] struct { elements []T } // Voorbeeld van een functie met getypeerde types func Map[T, U any](collection []T, f func(T) U) []U { result := make([]U, len(collection)) for i, item := range collection { result[i] = f(item) } return result } -
Typebeperkingen (Type Constraints): Definiëren een set van types die als generieke parameters kunnen worden gebruikt. Ze beperken de universaliteit van types en zorgen voor operationele veiligheid.
- Interfaces: Elke interface op zich is een typebeperking.
- Gecombineerde interfaces: Hiermee kunnen meerdere types of interfaces worden gecombineerd met behulp van de operator
|.
// Voorbeeld van een typebeperking met behulp van een gecombineerde interface type Number interface { int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | uintptr | float32 | float64 | complex64 | complex128 } // Functie die de typebeperking gebruikt func Add[T Number](a, b T) T { return a + b }
Deze middelen zijn toegevoegd in Go 1.18. Voor die tijd werden vergelijkbare functionaliteiten geïmplementeerd met behulp van interfaces (interface{}) en reflectie, wat de typeveiligheid en prestaties verminderde.