Sobes.tech
Senior

// 4. kérdés. Mit fog kiírni a képernyőre 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 MI

Válasz az MI-től

Ebben a kódban az is nevű szeletet hozunk létre [1, 2, 3, 4] elemekkel. Ezután a subis függvényt hívjuk meg az is[2:3] argumentummal, ami egy olyan szeletet tartalmaz, amely csak a 3 elemet tartalmazza.

A subis függvény egy új szeletet ad vissza, amely a megadott szelethez hozzáadott 5 elemmel jön létre. Azonban a subis hívás eredménye sehol nincs tárolva, így az eredeti is szelet nem változik.

A program kimenete a következő lesz:

[1 2 3 4]

Magyarázat:

  • A szeletek Go-ban olyan struktúrák, amelyek mutatót tartalmaznak egy tömbre, hosszúságot és kapacitást.
  • Az is[2:3] egy új, hosszúságú 1 szeletet hoz létre, amely a tömbben a 3 elemre mutat.
  • A append módosíthatja az eredeti tömböt, ha van szabad kapacitás, de mivel az eredmény nincs hozzárendelve, a változtatások nem kerülnek mentésre.
  • Az eredeti is szelet változatlan marad.