Middle+
Millised üldprogrammeerimise vahendid on olemas?
sobes.tech AI
Vastus AI-lt
Golangil on järgmised üldprogrammeerimise (generike) vahendid:
-
Parameetrite tüübid: Võimaldavad luua struktuure, liideseid ja funktsioone, mis saavad töötada erinevate andmetüüpidega ilma nende rangelt määramata kompileerimise ajal. Andmetüübid märgitakse sulgudes pärast tüübi või funktsiooni nime.
// Näide parameetritüüpi struktuurist type Stack[T any] struct { elements []T } // Näide parameetritüüpi funktsioonist 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üübipiirangud (Type Constraints): Määratlevad komplekti tüüpe, mida saab kasutada generikute parameetritena. Need võimaldavad piirata tüüpide universaalsust ja tagada operatsioonide turvalisus.
- Liideseid: Iga liides ise on tüüpi piirang.
- Liitliideseid: Võimaldavad ühendada mitu tüüpi või liidest
|operaatoriga.
// Näide tüüpi piirangust, kasutades liitliidest type Number interface { int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | uintptr | float32 | float64 | complex64 | complex128 } // Funktsioon, mis kasutab tüüpi piirangut func Add[T Number](a, b T) T { return a + b }
Need vahendid lisati Go 1.18 versiooni. Enne seda kasutati sarnase generiku funktsionaalsuse rakendamiseks liideseid (interface{}) ja refleksiooni, mis vähendas tüübi turvalisust ja jõudlust.