Sobes.tech
Junior — Middle

Qual è la funzione dell'oggetto receiver con un puntatore alla stella?

sobes.tech AI

Risposta dell'AI

In Go, il ricevitore dell'oggetto con puntatore (ad esempio, func (r *ReceiverType) Method()) consente al metodo di modificare lo stato dell'oggetto stesso a cui il ricevitore fa riferimento. Usare un puntatore invece di un valore offre i seguenti vantaggi:

  • Permette di modificare i campi della struttura all'interno del metodo.
  • Evita la copia di grandi strutture durante la chiamata del metodo, migliorando le prestazioni.
  • Garantisce coerenza se altri metodi accettano puntatori.

Esempio:

type Counter struct {
    count int
}

func (c *Counter) Increment() {
    c.count++  // modifica il campo della struttura tramite il puntatore
}

func main() {
    c := Counter{}
    c.Increment()
    fmt.Println(c.count)  // Stampa 1
}