Sobes.tech
Junior — Middle

¿Cómo se realiza la transferencia de elementos entre funciones y estructuras en el lenguaje Golang?

sobes.tech AI

Respuesta de la IA

En Go, la transferencia de elementos entre funciones y estructuras puede realizarse de dos maneras principales: por valor y por puntero.

  • Por valor: se copia la estructura o variable en sí misma, los cambios dentro de la función no afectan al original.
  • Por puntero: se pasa la dirección de la estructura o variable, lo que permite a la función modificar los datos originales.

Ejemplo:

package main
import "fmt"

type Person struct {
    Name string
    Age  int
}

func updateByValue(p Person) {
    p.Age = 30 // solo cambiará la copia
}

func updateByPointer(p *Person) {
    p.Age = 30 // cambiará el original
}

func main() {
    person := Person{Name: "Ivan", Age: 25}
    updateByValue(person)
    fmt.Println(person.Age) // 25

    updateByPointer(&person)
    fmt.Println(person.Age) // 30
}

Por lo tanto, si se desea modificar los datos dentro de la función, se pasa un puntero a la estructura. Si no se necesitan cambios, se puede pasar por valor.