¿Cómo copiar valores de un slice en Go?
Para copiar todos los elementos de un slice existe la función copy
. Para copiar valores de un slice a otro, un slice puede ser inicializado mediante otro del mismo tipo, ya que no es posible copiar los valores de un slice de enteros a otro de cadenas de strings. Una copia implica que los valores permanecen aun si el slice original es modificado o destruido.
Ejemplo de como copiar valores de un slice a otro en Go
package main
import "fmt"
func main() {
figuras := []string{"circulo", "cuadrado", "triangulo", "rombo", "trapecio", "heptagono"}
var figuras2 = make([]string, len(figuras))
fmt.Println(figuras)
copy(figuras2, figuras)
figuras = append(figuras[:1], figuras[2:]...)
fmt.Println(figuras2)
fmt.Println(figuras)
}
Salida…
[circulo cuadrado triangulo rombo trapecio heptagono]
[circulo cuadrado triangulo rombo trapecio heptagono]
[circulo triangulo rombo trapecio heptagono]
Descripción del ejemplo de como copiar valores de un slice en Go
En el ejemplo actual…
- Se crea un slice llamado
figuras
. - Se genera un contenedor para crear una copia, con la dimensión de
figuras
mediantemake([]string, len(figuras))
. - Se copian los valores de
figuras
enfiguras2
mediantecopy(figuras2, figuras)
. - Se elimina el elemento
cuadrado
defiguras
. - Los valores de
figuras2
no se han alterado.