Milyen általános programozási eszközök léteznek?
sobes.tech MI
Válasz az MI-től
A Golangban a következő általános programozási eszközök (generikusok) léteznek:
-
Paraméterezett típusok: Lehetővé teszik struktúrák, interfészek és függvények létrehozását, amelyek különböző adattípusokkal működhetnek anélkül, hogy szigorúan meg kellene határozni őket fordítási időben. Az adattípusokat szögletes zárójelek között adják meg a típus vagy függvény neve után.
// Példa paraméterezett típusú struktúrára type Stack[T any] struct { elements []T } // Példa paraméterezett típusú függvényre 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 } -
Típuskorlátozások (Type Constraints): Meghatározzák azon típusok halmazát, amelyeket generikus paraméterként lehet használni. Lehetővé teszik a típusok általánosságának korlátozását és az műveletek biztonságának biztosítását.
- Interfészek: Bármely interfész önmagában típuskorlátozás.
- Összevont interfészek: Lehetővé teszik több típus vagy interfész összekapcsolását a
|operátor segítségével.
// Példa típuskorlátozásra összevont interfész használatával type Number interface { int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | uintptr | float32 | float64 | complex64 | complex128 } // Függvény, amely használja a típuskorlátozást func Add[T Number](a, b T) T { return a + b }
Ezek az eszközök a Go 1.18-ban kerültek hozzáadásra. Korábban, hasonló funkcionalitásokat az interfészek (interface{}) és a reflexió segítségével valósították meg, ami csökkentette a típusbiztonságot és a teljesítményt.