Preciso fazer uma cópia de uma fatia no Go e, lendo os documentos, há uma função de cópia à minha disposição.
A função interna de cópia copia elementos de uma fatia de origem em uma fatia de destino. (Como um caso especial, ele também copiará bytes de uma string para uma fatia de bytes.) A origem e o destino podem se sobrepor. Copiar retorna o número de elementos copiados, que será o mínimo de len (src) e len (dst).
Mas quando eu faço:
arr := []int{1, 2, 3}
tmp := []int{}
copy(tmp, arr)
fmt.Println(tmp)
fmt.Println(arr)
Meu tmp
está vazio como estava antes (eu até tentei usar arr, tmp
):
[]
[1 2 3]
Você pode verificá-lo no playground . Então, por que não consigo copiar uma fatia?
dst
deve ter pelo menos o tamanho de muitos elementos que você deseja copiar (para uma cópia completa src
significa len(dst) >= len(src)
).
b := append([]int{}, a...)