Qanday umumiy dasturlash vositalari mavjud?
sobes.tech AI
AIdan javob
Golangda quyidagi umumiy dasturlash vositalari (generiklar) mavjud:
-
Parametrli turlar: Tuzilma, interfeyslar va funksiyalarni yaratishga imkon beradi, ular turli ma'lumot turlari bilan ishlashlari mumkin, ularni kompilatsiya bosqichida qat'iy 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 } -
Tur cheklovlari (Type Constraints): Parametr sifatida ishlatilishi mumkin bo'lgan turlar to'plamini belgilaydi. Ular turlarning umumiyligini cheklash va operatsiyalar xavfsizligini ta'minlash imkonini beradi.
- Interfeyslar: Har qanday interfeys o'z-o'zidan tur cheklovidir.
- Kombinatsiyalashgan interfeyslar: Bir nechta tur yoki interfeyslarni
|operatori yordamida birlashtirish imkonini beradi.
// Kombinatsiyalashgan interfeys yordamida tur cheklovining misoli type Number interface { int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | uintptr | float32 | float64 | complex64 | complex128 } // Tur cheklovidan foydalanadigan funksiya func Add[T Number](a, b T) T { return a + b }
Ushbu vositalar Go 1.18 versiyasida qo'shilgan. Oldin, shunga o'xshash funksiyalarni amalga oshirish uchun interfeyslar (interface{}) va refleksiya ishlatilgan, bu esa tur xavfsizligini va ishlashini pasaytirgan.