Sobes.tech
Senior

// Otázka 4. Čo sa zobrazí na obrazovke package main import "fmt" func subis(is []int) []int { return append(is, 5) } func main() { is := []int{1, 2, 3, 4} subis(is[2:3]) fmt.Println(is) }

sobes.tech AI

Odpoveď od AI

V tomto kóde sa vytvorí rez is s prvkami [1, 2, 3, 4]. Následne sa volá funkcia subis s argumentom is[2:3], čo je rez obsahujúci iba prvok 3.

Funkcia subis vráti nový rez, získaný pridaním prvku 5 k odovzdanému rezu. Výsledok volania subis však nikde nie je uložený, takže pôvodný rez is sa nezmení.

Výstup programu bude:

[1 2 3 4]

Vysvetlenie:

  • Rezy v Go sú štruktúry obsahujúce ukazovateľ na pole, dĺžku a kapacitu.
  • is[2:3] vytvorí nový rez s dĺžkou 1, ktorý ukazuje na prvok 3 v poli.
  • append môže zmeniť pôvodné pole, ak je k dispozícii voľná kapacita, ale pretože výsledok nie je priradený, zmeny sa neuložia.
  • Pôvodný rez is zostáva nezmenený.