Sobes.tech
Middle+

Feladat: Mit fog a kód kiírni? ```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 MI

Válasz az MI-től

Kód:

package main

import "fmt"

func main() {
    a := []int{1, 2, 3, 4, 5}
    b := a[:2]       // b az a első két elemére hivatkozik: [1, 2]
    b = append(b, 100) // hozzáadunk 100-at a b szelethez
    fmt.Println(a, b)
}

Elemzés:

  • Kezdetben, a = [1, 2, 3, 4, 5]
  • b := a[:2] — a b szelet tartalmazza [1, 2], és kapacitása 5 (0-tól a a végéig)
  • append(b, 100) hozzáadja a 100-at a b szelethez. Mivel a b kapacitása lehetővé teszi a bővítést új memória foglalása nélkül, a 100 elem a a[2]-be íródik, módosítva az eredeti a tömböt.

Az append után:

  • a lesz [1, 2, 100, 4, 5]
  • b lesz [1, 2, 100]

Kimenet:

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

Vagyis, az a[2] elem 3-ról 100-ra változott, mivel a b és az a egy közös alapprogramot osztanak meg.