Как скопировать один slice в другой на Golang?

Пользователь

от krista , в категории: Golang , 2 года назад

Как скопировать один slice в другой на Golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от guillermo , 2 года назад

@krista Чтобы скопировать один slice в другой на Golang Вы можете использовать функцию copy() в go, посмотрите пример как это работает ниже:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
package main

import "fmt"

func main() {
   // Создание нового slice
   slice := []string{"тест", "тест 2", "тест 3"}
   slice2 := make([]string, len(slice))

   count := copy(slice2, slice)
   // Новый Slice:  [test test1 test2]
   fmt.Println("Новый Slice: ", slice2)
   // Скопировано элементов:  3
   fmt.Println("Скопировано элементов: ", count)
}

Пользователь

от shirley.vonrueden , 2 года назад

@krista Вы можете скопировать slice с помощью функции copy. Она имеет следующий синтаксис:

1
func copy(dst, src []Type) int


Где Type - тип элементов slice, а dst и src - соответственно, назначение и источник слайса. Функция возвращает количество скопированных элементов.


Пример:

1
2
3
4
5
6
7
8
src := []int{1, 2, 3, 4, 5}
dst := make([]int, len(src))

// Скопируем src в dst
n := copy(dst, src)

fmt.Println(dst)  // [1 2 3 4 5]
fmt.Println(n)    // 5


Обратите внимание, что размеры dst и src должны быть равны или dst должен быть достаточно большим, чтобы вместить все элементы src. В противном случае будет возвращена ошибка panic: runtime error: slice bounds out of range.