Копирование среза в Go
Копирование переносит элементы в другой срез, не связывая их общим куском. Встроенная команда copy принимает приемник и источник, возвращает, сколько ячеек записано. После копии смена в одном срезе не трогает другой.
Скопируем три числа и изменим источник:
src := []int{10, 20, 30}
dst := make([]int, 3)
copy(dst, src)
src[0] = 99
fmt.Println(dst)
fmt.Println(src)
dst останется 10, 20, 30, а src начнется с 99. Общего массива между ними нет.
Даны переменные:
src := []int{1, 2}
dup := make([]int, 2)
Скопируйте src в dup, измените первый элемент src и выведите оба среза.
Создайте приемник короче источника и скажите, сколько элементов перенесет copy.
Скажите, делят ли независимые срезы после копирования одну память.