Ответ
Append в Go возвращает новый слайс с добавленными элементами. Исходный слайс не изменяется, если его capacity недостаточна. Если capacity хватает, новый слайс может ссылаться на тот же базовый массив.
Пример:
s := []int{1, 2, 3}
s = append(s, 4) // [1 2 3 4]
Нюансы:
- Если capacity мала, создаётся новый массив, и элементы копируются.
- Всегда используйте возвращаемое значение (
s = append(s, elem)), иначе изменения могут потеряться.