Подслайсы могут разделять один backing array. Если append помещается в capacity второго среза, он способен перезаписать элементы, видимые через первый.
Если создать подслайс из первого слайса и сделать append во второй, какие проблемы могут возникнуть?
Подслайсы могут разделять один backing array. Если append помещается в capacity второго среза, он способен перезаписать элементы, видимые через первый.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Подслайсы могут разделять один backing array. Если append помещается в capacity второго среза, он способен перезаписать элементы, видимые через первый.
a := []int{1, 2, 3, 4}
b := a[:2]
b = append(b, 9)
// a теперь [1 2 9 4]
Ограничение capacity через b := a[:2:2] заставит этот append выделить новый массив. Но до append общие элементы всё ещё разделяются. Для независимости сразу копируйте данные. Также маленький подслайс может удерживать в памяти большой исходный массив.