Home >Backend Development >Golang >How does the `copy()` function work in Go?
Despite the documentation, the operation of the copy function may require further clarification.
The copy function transfers elements from a source slice to a destination slice of the same element type. Note that copy may copy bytes from a string to a slice of bytes.
The copy function's signature is:
<code class="go">func copy(dst, src []Type) int</code>
Where:
copy essentially copies elements from src to dst up to the minimum of len(src) and len(dst) elements. This means it ensures that the destination slice can accommodate all elements from the source slice without exceeding its capacity.
Consider the following code:
<code class="go">package main import "fmt" func main() { src := []int{10, 11, 12, 13, 14} dst := []int{0, 1, 2, 3, 4} n := copy(dst, src) fmt.Println("n =", n, "src =", src, "dst =", dst) }</code>
Output:
n = 5 src = [10 11 12 13 14] dst = [10 11 12 13 14]
In this example, the entire src slice is copied into the dst slice, resulting in both slices having the same elements.
The copy function can also be used with overlapping slices. For example:
<code class="go">copy(src, src[1:]) fmt.Println("n =", n, "src =", src)</code>
Output:
n = 4 src = [1 2 3 4 4]
In this scenario, the first element of src is excluded from copying, and the remaining four elements are effectively shifted one index to the left, overwriting the first element with the last element.
As mentioned earlier, copy allows copying bytes from a string to a slice of bytes. Here's an example:
<code class="go">str := "Hello, World!" data := make([]byte, 5) n = copy(data, str) fmt.Println("n =", n, "str =", str, "data =", data)</code>
Output:
n = 5 str = Hello, World! data = [72 101 108 108 111]
The copy function copies the first five bytes of the UTF-8 representation of the string into the data slice.
The copy function provides an efficient way to transfer elements between slices, even when they share overlapping memory. Its versatility makes it a valuable tool in Go programming.
The above is the detailed content of How does the `copy()` function work in Go?. For more information, please follow other related articles on the PHP Chinese website!