Sobes.tech
Middle+

Ümumi proqramlaşdırma vasitələri hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

Golang-da aşağıdakı ümumi proqramlaşdırma vasitələri (generiklər) mövcuddur:

  1. Parametrli tiplər: Strukturlar, interfeys və funksiyalar yaratmağa imkan verir ki, bunlar müxtəlif məlumat tipləri ilə işləyə bilsinlər, onları sərt şəkildə təyin etmədən. Məlumat tipləri tip və ya funksiyanın adından sonra kvadrat mötərizələrdə göstərilir.

    // Parametrli tiplə struktur nümunəsi
    type Stack[T any] struct {
    	elements []T
    }
    
    // Parametrli tiplərlə funksiya nümunəsi
    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
    }
    
  2. Tip məhdudiyyətləri (Type Constraints): Parametr kimi istifadə oluna biləcək tiplər toplusunu müəyyən edir. Tiplərin ümumiləşdirilməsini məhdudlaşdırmağa və əməliyyatların təhlükəsizliyini təmin etməyə imkan verir.

    • Interfeyslar: Hər hansı bir interfeys öz-özlüyündə tip məhdudiyyətidir.
    • Birgə interfeyslar: Bir neçə tip və ya interfeysi | operatoru ilə birləşdirməyə imkan verir.
    // Birgə interfeys istifadə edilərək tip məhdudiyyətinin nümunəsi
    type Number interface {
    	int | int8 | int16 | int32 | int64 |
    		uint | uint8 | uint16 | uint32 | uint64 | uintptr |
    		float32 | float64 |
    		complex64 | complex128
    }
    
    // Tip məhdudiyyətindən istifadə edən funksiya
    func Add[T Number](a, b T) T {
    	return a + b
    }
    

Bu vasitələr Go 1.18-də əlavə olunmuşdur. Onlardan əvvəl, genetik funksionallıq üçün, interfeys (interface{}) və refleksiya istifadə olunurdu, bu da tip təhlükəsizliyini və performansı azaldırdı.