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]— rezbobsahuje [1, 2], a jeho kapacita je 5 (od 0 do koncaa)append(b, 100)pridá prvok 100 do rezub. Pretože kapacitabumožňuje rozšírenie bez alokácie novej pamäti, prvok 100 sa zapíše doa[2], čím sa mení pôvodný poľoma.
Po append:
asa stáva [1, 2, 100, 4, 5]bsa 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.