Avatar ·

¿Por qué copy() no copia un slice en Go? ¿O estoy haciendo algo mal?

¡Hola a todos! Empecé a estudiar Go recientemente y me encontré con un problema confuso al trabajar con slices. Necesitaba duplicar un slice en otro para luego modificar la copia independientemente del original. Leí que para eso existe la función incorporada `copy()`. Escribí este código: ```go package main import "fmt" func main() { original := []int{1, 2, 3, 4, 5} var copySlice []int copy(copySlice, original) fmt.Println("original:", original) fmt.Println("copy:", copySlice) } ``` ¡Pero en la salida obtuve un slice vacío! `copySlice` quedó como `[]`. Esperaba que después de `copy()`, `copySlice` tuviera los mismos elementos que `original`. Luego probé otra opción: primero declaré un slice con longitud, pero sin valores: ```go copySlice2 := make([]int, len(original)) copy(copySlice2, original) ``` ¡Y esto funcionó! Pero, ¿por qué no funciona la primera opción? En la documentación dice que `copy` copia elementos, pero no explica por qué un slice vacío no...