Sobes.tech
Junior — Middle

Kde se v paměti vytváří slice v Go?

sobes.tech AI

Odpověď od AI

V jazyce Go je řez (slice) struktura, která obsahuje ukazatel na pole, délku a kapacitu. Samotný řez (struktura s těmito třemi poli) je obvykle vytvořen na zásobníku, pokud je lokální, nebo na haldě, pokud je součástí složitější struktury nebo je vrácen z funkce.

Data, na která odkazuje řez (tedy samotné pole), jsou vždy na haldě, pokud jsou dynamicky alokována, nebo v statické paměti, pokud se jedná o pevně veliké pole.

Například:

func priklad() []int {
    arr := []int{1, 2, 3}
    return arr
}

Zde je arr řez, jehož struktura může být na zásobníku, ale pole s prvky je na haldě, aby data přetrvala po opuštění funkce.

Proto je řez malá struktura v paměti (obvykle na zásobníku), která ukazuje na pole na haldě.