Функция copy

Функция copy копирует элементы из исходного слайса в целевой слайс. В первый параметр мы передаем целевой слайс (куда копируем), во второй параметр мы передаем исходный слайс (откуда копируем). Функция возвращает количество скопированных элементов, которое равно минимальной длине из двух слайсов.

Синтаксис

gocopy(dst, src)

Пример

Давайте скопируем элементы из одного слайса в другой:

gopackage main

import "fmt"

func main() {
  src := []string{"a", "b", "c", "d", "e"}
  dst := make([]string, 3)

  n := copy(dst, src)

  fmt.Printf("Copied: %d\n", n)
  fmt.Println("dst:", dst)
}

Результат выполнения кода:

go"Copied: 3"
"dst: [a b c]"

Пример

Давайте скопируем все элементы в слайс большей длины:

gopackage main

import "fmt"

func main() {
  src := []string{"a", "b", "c"}
  dst := make([]string, 5)

  n := copy(dst, src)

  fmt.Printf("Copied: %d\n", n)
  fmt.Println("dst:", dst)
}

Результат выполнения кода:

go"Copied: 3"
"dst: [a b c  ]"

Пример

Давайте скопируем часть элементов с помощью среза:

gopackage main

import "fmt"

func main() {
  src := []int{1, 2, 3, 4, 5}
  dst := make([]int, 2)

  n := copy(dst, src[2:4])

  fmt.Printf("Copied: %d\n", n)
  fmt.Println("dst:", dst)
}

Результат выполнения кода:

go"Copied: 2"
"dst: [3 4]"

Пример

Давайте скопируем элементы между существующими слайсами с перезаписью:

gopackage main

import "fmt"

func main() {
  dst := []string{"x", "y", "z"}
  src := []string{"a", "b", "c", "d"}

  n := copy(dst, src)

  fmt.Printf("Copied: %d\n", n)
  fmt.Println("dst:", dst)
}

Результат выполнения кода:

go"Copied: 3"
"dst: [a b c]"

Смотрите также

  • функцию append,
    которая добавляет элементы в слайс
  • функцию len,
    которая возвращает длину слайса
  • функцию cap,
    которая возвращает емкость слайса
  • функцию clear,
    которая очищает слайс