J'ai besoin de faire une copie d'une tranche dans Go et en lisant la documentation, une fonction de copie est à ma disposition.
La fonction intégrée de copie copie les éléments d'une tranche source dans une tranche de destination. (Dans un cas particulier, il copiera également les octets d'une chaîne vers une tranche d'octets.) La source et la destination peuvent se chevaucher. Copy renvoie le nombre d'éléments copiés, qui sera le minimum de len (src) et len (dst).
Mais quand je fais:
arr := []int{1, 2, 3}
tmp := []int{}
copy(tmp, arr)
fmt.Println(tmp)
fmt.Println(arr)
My tmp
est vide comme avant (j'ai même essayé de l'utiliser arr, tmp
):
[]
[1 2 3]
Vous pouvez le vérifier sur le terrain de jeu . Alors pourquoi ne puis-je pas copier une tranche?
dst
devrait être au moins aussi grande que le nombre d'éléments que vous souhaitez copier (pour une copie complète de src
cela signifie len(dst) >= len(src)
).
b := append([]int{}, a...)