Go: Copy function explained

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


Example: 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}

Example: Copy from a slice to itself:

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

Example: Copy from a string to a byte slice:

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


Be the first to comment!