Почему копия исчезает?
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).
Читайте также:
- Как использовать функцию copy в Golang
- Массивы, срезы и строки: механика работы append в Golang
- Срезы в Golang: внутреннее устройство и использование
Комментариев нет:
Отправить комментарий