Массив и срез в Go
Из массива получают срез на все его элементы. После имени массива пишут [:] без границ: срез охватывает каждую ячейку массива и может делить с ним память при вырезках.
Обратный путь в фиксированный массив: копирование в массив через copy, если длина среза не больше числа ячеек массива. Прямое присваивание массива из среза другого размера не подходит.
Возьмем срез с массива и скопируем в другой массив:
arr := [3]int{10, 20, 30}
view := arr[:]
view[0] = 99
fmt.Println(arr)
other := [3]int{}
copy(other[:], view)
fmt.Println(other)
Массив arr изменился через view. other получил копию значений на момент copy.
Даны переменные:
box := [2]int{1, 2}
peek := box[:]
Измените peek[1] и выведите box.
Даны переменные:
data := []int{7, 8}
box := [2]int{}
Скопируйте data в массив через copy с вырезкой массива.
Скажите, можно ли записать срез в массив одним знаком = без copy.