Sobes.tech
Senior

// Питање 4. Шта ће се приказати на екрану 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 АИ

Одговор од АИ

U ovom kodu se kreira odsečak is sa elementima [1, 2, 3, 4]. Zatim se poziva funkcija subis sa argumentom is[2:3], što je odsečak koji sadrži samo element 3.

Funkcija subis vraća novi odsečak, dobijen dodavanjem elementa 5 prosleđenom odsečku. Međutim, rezultat poziva subis se nigde ne čuva, pa se originalni odsečak is ne menja.

Izlaz programa će biti:

[1 2 3 4]

Objašnjenje:

  • Odseci u Go su strukture koje sadrže pokazivač na niz, dužinu i kapacitet.
  • is[2:3] kreira novi odsečak dužine 1, koji pokazuje na element 3 u nizu.
  • append može promeniti originalni niz ako postoji slobodan kapacitet, ali pošto rezultat nije dodeljen, promene se ne čuvaju.
  • Originalni odsečak is ostaje nepromenjen.