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ě.