> Какие способы копирования слайса в Go существуют (Go)
Уровень: senior · Роль: backend · Категория: Технические вопросы
Компании: Ozon, Лига Цифровой Экономики
Стек: Go
> Пример ответа
В Go есть несколько способов копирования слайса, каждый со своими особенностями:
- С помощью встроенной функции
copy- самый эффективный и идиоматичный способ. Копирует элементы из исходного слайса в целевой, но количество скопированных элементов равно минимальной длине двух слайсов.
GOsrc := []int{1, 2, 3}dst := make([]int, len(src))copy(dst, src)
- Через
append- простой способ, но создаёт новый слайс с той же ёмкостью, что и длина исходного. Подходит для быстрого копирования без предварительного выделения памяти.
GOsrc := []int{1, 2, 3}dst := append([]int(nil), src...)
- С помощью цикла
for- даёт полный контроль над процессом, но менее лаконичен. Может быть полезен при необходимости дополнительной обработки элементов.
GOsrc := []int{1, 2, 3}dst := make([]int, len(src))for i := range src {dst[i] = src[i]}
- Через
slices.Clone(Go 1.21+) - новый способ, который создаёт независимую копию слайса, включая все элементы.
GOimport "slices"src := []int{1, 2, 3}dst := slices.Clone(src)
Важно помнить: все эти способы выполняют поверхностное копирование. Для слайсов с указателями или ссылочными типами (например, срез структур с указателями) потребуется ручное глубокое копирование.
> Похожие задачи по backend
Что такое сбалансированное дерево
Уровень: juniorКатегория: Технические вопросы
Компания: InDrive, VK
Стек: Go
Приходилось ли работать с базами данных?
Уровень: middleКатегория: Технические вопросы
Компания: Axel Pro, Wildberries, VK
Стек: Go
Являются ли мапы в Go потокобезопасными
Уровень: seniorКатегория: Технические вопросы
Компания: ЦУМ, InDrive
Стек: Go
Как сделать так, чтобы изменения слайса в функции были видны в вызывающей функции
Уровень: middleКатегория: Технические вопросы
Компания: Ozon, Black Wall Group (BWG)
Стек: Go
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью