В следующем коде в выводе ничего нет, но функция копирования действительно выполняется, так почему же так?
var iArray1 = []int{0, 1, 2, 3, 4, 5, 6}
var iArray2 []int
copy(iArray2, iArray1)
for _, v := range iArray2 {
fmt.Printf("v: %v\n", v)
}
Изучив данные, я обнаружил, что исходная функция copy() в go копирует в соответствии с количеством элементов меньшего фрагмента массива. Таким образом, причина, по которой приведенное выше выполнение не имеет результатов, заключается в том, что срез с именем iArray2 не имеет начального значения и определенной длины после определения, поэтому по умолчанию используется значение 0, поэтому, хотя iArray1 копируется в iArray2, копируется только 0, поэтому выходной результат отсутствует.
Затем давайте изменим его и присвоим iArray2 начальную длину.
Посмотрите внимательно на положение моей красной стрелки, дайте iArray2 десять длин, затем выполните copy() и скопируйте iArray1 в iArray2. После нахождения вывода копирование действительно прошло успешно, но все следующие элементы равны 0. Причина все же в том, что iArray1 копирует в iArray2 только семь значений, поэтому оставшиеся три значения в iArray1 не перезаписываются, и по умолчанию они по-прежнему равны 0.