Sobes.tech
Middle+

Kokios bendrosios programavimo priemonės egzistuoja?

sobes.tech AI

Atsakymas iš AI

Golang'e yra šie bendrojo programavimo (generikų) priemonės:

  1. 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
    }
    
  2. 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ą.