package main
import "fmt"
func main() {
s := make([]int, 2, 3)
s[0], s[1] = 1, 2
a := s[:2]
b := append(s, 3)
modify(a)
modify(b)
fmt.Println(s)
fmt.Println(a)
fmt.Println(b)
}
func modify(x []int) {
x = append(x, 100)
x[0] = 999
}
- Какие append используют тот же underlying array, а какие нет?
- В какой момент происходит реаллокация памяти?
Подсказка:
s, a и b сначала делят один backing array,
но не все изменения доходят до всех слайсов.
Ответ:
[999 2]
[999 2]
[999 2 100]
📌 Запустить код: https://go.dev/play/p/wVRz6QFmMCv
