Middle+
Koja sredstva opšte programiranja postoje?
sobes.tech АИ
Одговор од АИ
U Golangu postoje sledeća sredstva za generičko programiranje:
-
Parametrizovani tipovi: Omogućavaju kreiranje struktura, interfejsa i funkcija koje mogu raditi sa različitim tipovima podataka bez njihovog strogo definisanja u fazi kompajliranja. Tipovi podataka se navode u uglastim zagradama nakon imena tipa ili funkcije.
// Primer strukture sa parametrizovanim tipom type Stack[T any] struct { elements []T } // Primer funkcije sa parametrizovanim tipovima 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 } -
Ograničenja tipova (Type Constraints): Definišu skupove tipova koji mogu biti korišćeni kao generički parametri. Omogućavaju ograničavanje univerzalnosti tipova i obezbeđuju sigurnost operacija.
- Interfejsi: Svaki interfejs sam po sebi predstavlja ograničenje tipa.
- Kombinovani interfejsi: Omogućavaju spajanje više tipova ili interfejsa pomoću operatora
|.
// Primer ograničenja tipa korišćenjem kombinovanog interfejsa type Number interface { int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | uintptr | float32 | float64 | complex64 | complex128 } // Funkcija koja koristi ograničenje tipa func Add[T Number](a, b T) T { return a + b }
Ova sredstva su dodata u Go 1.18. Pre toga, za implementaciju sličnih funkcionalnosti koristile su se interfejsi (interface{}) i refleksija, što je smanjivalo sigurnost tipova i performanse.