How to use the copy function

The built-in copy function copies elements into a destination slice dst from a source slice src.

func copy(dst, src []Type) int

It returns the number of elements copied, which will be the minimum of len(dst) and len(src). The result does not depend on whether the arguments overlap.

Special case

It is legal to copy bytes from a string to a slice of bytes.

copy(dst []byte, src string) int


Copy from one slice to another:

var s = make([]int, 3)
n := copy(s, []int{0, 1, 2, 3}) // n == 3, s == []int{0, 1, 2}

Copy from a slice to itself:

s := []int{0, 1, 2}
n := copy(s, s[1:]) // n == 2, s == []int{1, 2, 2}

Copy from a string to a byte slice:

var b = make([]byte, 5)
copy(b, "Hello, world!") // b == []byte("Hello")

Further reading

Slices in a nutshell

Share this page: