Middle+
Жалпы программалоо үчүн кандай каражаттар бар?
sobes.tech AI
AIден жооп
Golang-da quyidagi umumiy dasturlash vositalari (generiklar) mavjud:
-
Parametrli turlar: Tuzilma, interfeyslar va funksiyalarni yaratishga imkon beradi, ular turli ma'lumot turlari bilan ishlashlari mumkin, ularni qat'iy tarzda belgilashsiz. Ma'lumot turlari tur yoki funksiyaning nomidan keyin kvadrat qavslar ichida ko'rsatiladi.
// Parametrli tur bilan tuzilma misoli type Stack[T any] struct { elements []T } // Parametrli turlar bilan funksiya misoli 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 } -
Тип чекловлари (Type Constraints): Типларнинг умумийлигини чеклаш ва амалиётларнинг хавфсизлигини таъминлаш учун уларнинг тўпламини аниқлайди.
- Интерфейслар: Ҳар қандай интерфейс ўз-ўзидан тип чекловидир.
- Кўплатилган интерфейслар: Бир нечта тур ёки интерфейсларни
|оператори ёрдамида бирлаштириш имконини беради.
// Кўплатилган интерфейсдан фойдаланган тип чеклови мисоли type Number interface { int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | uintptr | float32 | float64 | complex64 | complex128 } // Тип чекловидан фойдаланган функция func Add[T Number](a, b T) T { return a + b }
Бу воситалар Go 1.18да қўшилган. Улардан аввал, шунга ўхшаш функцияларни амалга ошириш учун интерфейслар (interface{}) ва рефлексиядан фойдаланилган, бу эса тип хавфсизлиги ва ишлаш самарадорлигини камайтирган.