среда, 20 мая 2020 г.

Почему copy не копирует?

Почему копия исчезает?

var src, dst []int
src = []int{1, 2, 3}
copy(dst, src) // Копируем элементы в dst из src.
fmt.Println("dst:", dst)

dst: []

Ответ

Количество элементов, копируемых функцией copy, является минимумом len(dst) и len(src). Чтобы сделать полную копию, вы должны выделить достаточно большой целевой срез.

var src, dst []int
src = []int{1, 2, 3}
dst = make([]int, len(src))
n := copy(dst, src)
fmt.Println("dst:", dst, "(copied", n, "numbers)")

dst: [1 2 3] (copied 3 numbers)

Возвращаемое значение функции копирования - количество скопированных элементов.

Используя append

Вы также можете использовать функцию append, чтобы сделать копию, добавив к нулевому срезу.

var src, dst []int
src = []int{1, 2, 3}
dst = append(dst, src...)
fmt.Println("dst:", dst)

dst: [1 2 3]

Обратите внимание, что емкость среза, выделенного append, может быть немного больше, чем len(src).


Читайте также:


Комментариев нет:

Отправить комментарий