Copie una array por valor y referencia en otra array en Golang

Array en Golang es una secuencia numerada de elementos del mismo tipo. El tamaño de la array es fijo. Podemos acceder a los elementos por su índice. Puede declarar una array de tamaño n y tipo T especificando esta forma mencionada a continuación.

var array[n]T 

Go no tiene una función incorporada para copiar una array a otra array. Hay dos formas de copiar una array a otra array:

  • Por valor
  • Por referencia

1. Copiar por valor: si copiamos una array por valor y luego se realizan cambios en los valores de la array original, los mismos cambios no se verán reflejados en la copia de la array original.

2. Copiar por referencia: si copiamos una array por referencia y luego hacemos cambios en la array original, se reflejarán en la copia de la array original creada.

Ejemplo:

// Golang program to copy an array by value
// and reference into another array
package main
  
import "fmt"
  
func main() {
  
    // original string
    strArray := [3]string{"Apple", "Mango", "Guava"}
  
    // data is passed by value
    Arraybyval := strArray
  
    // data is passed by reference
    Arraybyref := &strArray
  
    fmt.Printf("strArray: %v\n", strArray)
    fmt.Printf("Arraybyval : %v\n", Arraybyval)
    fmt.Printf("*Arraybyref : %v\n", *Arraybyref)
  
    strArray[0] = "Watermelon"
  
    fmt.Printf("After making changes")
  
    fmt.Printf("strArray: %v\n", strArray)
    fmt.Printf("Arraybyval: %v\n", Arraybyval)
    fmt.Printf("*Arraybyref: %v\n", *Arraybyref)
}

Producción:

strArray: [Apple Mango Guava]
Arraybyval : [Apple Mango Guava]
*Arraybyref : [Apple Mango Guava]
After making changesstrArray: [Watermelon Mango Guava]
Arraybyval: [Apple Mango Guava]
*Arraybyref: [Watermelon Mango Guava]

Publicación traducida automáticamente

Artículo escrito por devanshigupta1304 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *