Middle+
Kokios bendrosios programavimo priemonės egzistuoja?
sobes.tech AI
Atsakymas iš AI
Golang'e yra šie bendrojo programavimo (generikų) priemonės:
-
Parametrizuoti tipai: Leidžia kurti struktūras, sąsajas ir funkcijas, kurios gali dirbti su įvairiais duomenų tipais be jų griežto nurodymo kompiliavimo metu. Duomenų tipai nurodomi skliausteliuose po tipo ar funkcijos pavadinimu.
// Pavyzdys su parametrizuotu tipu type Stack[T any] struct { elements []T } // Pavyzdys su parametrizuotomis funkcijomis 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 } -
Tipų apribojimai (Type Constraints): Apibrėžia tipų rinkinį, kuris gali būti naudojamas kaip generikų parametrai. Jie leidžia apriboti tipų universalumą ir užtikrinti operacijų saugumą.
- Sąsajos: Bet kuri sąsaja pati savaime yra tipų apribojimas.
- Jungtinės sąsajos: Leidžia jungti kelias tipos ar sąsajas naudojant operatorių
|.
// Pavyzdys su tipų apribojimu naudojant jungtinę sąsają type Number interface { int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | uintptr | float32 | float64 | complex64 | complex128 } // Funkcija, naudojanti tipų apribojimą func Add[T Number](a, b T) T { return a + b }
Šios priemonės buvo pridėtos į Go 1.18 versiją. Iki tol, norint įgyvendinti panašų generikų funkcionalumą, naudotos sąsajos (interface{}) ir refleksija, kas sumažindavo tipų saugumą ir našumą.