儘管有文檔,但複製功能的操作可能需要進一步說明。
複製函數將元素從來源切片傳送到相同元素類型的目標切片。請注意,複製可以將字串中的位元組複製到位元組切片。
複製函數的簽章是:
<code class="go">func copy(dst, src []Type) int</code>
其中:
複製本質上是將元素從 src 複製到 dst,直到 len(src) 和 len(dst) 元素中的最小值。這意味著它確保目標切片可以容納來源切片中的所有元素而不超出其容量。
考慮以下程式碼:
<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>
輸出:
n = 5 src = [10 11 12 13 14] dst = [10 11 12 13 14]
在此範例中,整個src 切片被複製到dst 切片中,導致兩個切片具有相同的元素。
複製函數也可以與重疊切片一起使用。例如:
<code class="go">copy(src, src[1:]) fmt.Println("n =", n, "src =", src)</code>
輸出:
n = 4 src = [1 2 3 4 4]
在這種情況下,src 的第一個元素被排除在複製之外,其餘四個元素有效地向左移動一個索引,用最後一個元素覆蓋第一個元素。
如前所述,複製允許將字串從字串複製到位元組切片。以下是一個範例:
<code class="go">str := "Hello, World!" data := make([]byte, 5) n = copy(data, str) fmt.Println("n =", n, "str =", str, "data =", data)</code>
輸出:
n = 5 str = Hello, World! data = [72 101 108 108 111]
複製函數將字串的 UTF-8 表示形式的前五個位元組複製到資料切片中。
複製函數提供了一種在切片之間傳輸元素的有效方法,即使它們共享重疊記憶體也是如此。它的多功能性使其成為 Go 編程中的一個有價值的工具。
以上是Go 中的「copy()」函數如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!