Sobes.tech
Junior — Middle

Come viene realizzato il passaggio di elementi tra funzioni e strutture nel linguaggio Golang?

sobes.tech AI

Risposta dell'AI

In Go, la trasmissione di elementi tra funzioni e strutture può avvenire in due modi principali: per valore e per puntatore.

  • Per valore: viene copiata la struttura o variabile stessa, le modifiche all'interno della funzione non influenzano l'originale.
  • Per puntatore: viene passato l'indirizzo della struttura o variabile, permettendo alla funzione di modificare i dati originali.

Esempio:

package main
import "fmt"

type Person struct {
    Name string
    Age  int
}

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

func updateByPointer(p *Person) {
    p.Age = 30 // cambierà l'originale
}

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

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

Pertanto, se si desidera modificare i dati all'interno della funzione, si passa un puntatore alla struttura. Se non sono necessarie modifiche, si può passare per valore.