Sobes.tech
Middle+

Úloha: Čo zobrazí kód? ```go package main import "fmt" func main() { a := []int{1, 2, 3, 4, 5} b := a[:2] b = append(b, 100) fmt.Println(a, b) } ```

sobes.tech AI

Odpoveď od AI

Kód:

package main

import "fmt"

func main() {
    a := []int{1, 2, 3, 4, 5}
    b := a[:2]       // b odkazuje na prvé dva prvky od a: [1, 2]
    b = append(b, 100) // pridávame 100 do rezu b
    fmt.Println(a, b)
}

Analýza:

  • Pôvodne je a = [1, 2, 3, 4, 5]
  • b := a[:2] — rez b obsahuje [1, 2], a jeho kapacita je 5 (od 0 do konca a)
  • append(b, 100) pridá prvok 100 do rezu b. Pretože kapacita b umožňuje rozšírenie bez alokácie novej pamäti, prvok 100 sa zapíše do a[2], čím sa mení pôvodný poľom a.

Po append:

  • a sa stáva [1, 2, 100, 4, 5]
  • b sa stáva [1, 2, 100]

Výstup:

[1 2 100 4 5] [1 2 100]

Inými slovami, prvok a[2] sa zmenil z 3 na 100, pretože b a a zdieľajú rovnaké podkladové pole.