Copia profunda en Go

Jay Singh 20 junio 2023
Copia profunda en Go

Cuando intenta generar un duplicado de un objeto, la copia profunda copia exactamente todos los campos de los objetos originales. Además, si tiene algún objeto como campo, también se hace una copia de los mismos.

Esto significa que si realiza una copia profunda en un objeto que contiene una referencia (objeto), tanto el objeto original como el duplicado se refieren a objetos separados, y los cambios realizados en los datos del objeto copiado no se reflejan en el objeto original.

Veamos algunos casos para comprender mejor cómo realizar una copia profunda en Go.

Realice Deep Copy usando struct en Go

Podemos hacer una copia tan profunda manualmente. En el caso de un segmento, use el siguiente código para hacer una copia profunda.

Verá que el sector es un objeto completamente independiente, no solo una referencia al mismo sector.

Ejemplo:

package main

import (
    "fmt"
)

type Cat struct {
    age     int
    name    string
    friends []string
}

func main() {
    harry := Cat{1, "Harry", []string{"Ron", "Jenny", "Kety"}}
    jay := harry

    jay.friends = make([]string, len(harry.friends))
    copy(jay.friends, harry.friends)

    jay.friends = append(jay.friends, "Sid")

    fmt.Println(harry)
    fmt.Println(jay)
}

Producción

{1 Harry [Ron Jenny Kety]}
{1 Harry [Ron Jenny Kety Sid]}