Sobes.tech
Middle+

Milyen általános programozási eszközök léteznek?

sobes.tech MI

Válasz az MI-től

A Golangban a következő általános programozási eszközök (generikusok) léteznek:

  1. Paraméterezett típusok: Lehetővé teszik struktúrák, interfészek és függvények létrehozását, amelyek különböző adattípusokkal működhetnek anélkül, hogy szigorúan meg kellene határozni őket fordítási időben. Az adattípusokat szögletes zárójelek között adják meg a típus vagy függvény neve után.

    // Példa paraméterezett típusú struktúrára
    type Stack[T any] struct {
    	elements []T
    }
    
    // Példa paraméterezett típusú függvényre
    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. Típuskorlátozások (Type Constraints): Meghatározzák azon típusok halmazát, amelyeket generikus paraméterként lehet használni. Lehetővé teszik a típusok általánosságának korlátozását és az műveletek biztonságának biztosítását.

    • Interfészek: Bármely interfész önmagában típuskorlátozás.
    • Összevont interfészek: Lehetővé teszik több típus vagy interfész összekapcsolását a | operátor segítségével.
    // Példa típuskorlátozásra összevont interfész használatával
    type Number interface {
    	int | int8 | int16 | int32 | int64 |
    		uint | uint8 | uint16 | uint32 | uint64 | uintptr |
    		float32 | float64 |
    		complex64 | complex128
    }
    
    // Függvény, amely használja a típuskorlátozást
    func Add[T Number](a, b T) T {
    	return a + b
    }
    

Ezek az eszközök a Go 1.18-ban kerültek hozzáadásra. Korábban, hasonló funkcionalitásokat az interfészek (interface{}) és a reflexió segítségével valósították meg, ami csökkentette a típusbiztonságot és a teljesítményt.