append в подсрез изменил элементы исходного среза
В коде разбора батча событий встретилось такое:
a := []int{1, 2, 3, 4, 5}
b := a[:2]
b = append(b, 99)
fmt.Println(a)
Что окажется в срезе a после append?
- `[1 2 3 4 5]` — `b` независим, `append` выделил новый массив
- `[1 2 99 4 5]` — `b` делит массив с `a`, запись пошла в существующую ячейку
- `[1 2 3 4 5 99]` — элемент дописался в конец исходного среза
- `[1 2 99]` — длина `a` уменьшилась до длины `b`
