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.