Sobes.tech
Middle+

Zadanie: Co wyświetli kod? ```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

Odpowiedź od AI

Kod:

package main

import "fmt"

func main() {
    a := []int{1, 2, 3, 4, 5}
    b := a[:2]       // b odnosi się do pierwszych dwóch elementów a: [1, 2]
    b = append(b, 100) // dodajemy 100 do wycinka b
    fmt.Println(a, b)
}

Analiza:

  • Początkowo a = [1, 2, 3, 4, 5]
  • b := a[:2] — wycinek b zawiera [1, 2], a jego pojemność wynosi 5 (od 0 do końca a)
  • append(b, 100) dodaje element 100 do wycinka b. Ponieważ pojemność b pozwala na rozszerzenie bez alokacji nowej pamięci, element 100 jest zapisywany w a[2], co zmienia oryginalną tablicę a.

Po dodaniu:

  • a staje się [1, 2, 100, 4, 5]
  • b staje się [1, 2, 100]

Wynik:

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

Oznacza to, że element a[2] zmienił się z 3 na 100, ponieważ b i a dzielą wspólną tablicę podstawową.