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]}