Menu
Coddy logo textTech

Che cos'è un puntatore

Lezione 2 di 19 del corso Funzioni e puntatori in Golang di Coddy.

La prima domanda a cui dobbiamo rispondere è: che cos’è un puntatore? Abbiamo già imparato a conoscere le variabili, che abbiamo definito come scatole che memorizzano i nostri valori. I puntatori, invece, sono scatole che memorizzano indirizzi anziché valori.

Quando creiamo una variabile in un qualsiasi linguaggio di programmazione, questa variabile viene memorizzata in memoria e ogni spazio in memoria ha un indirizzo. Per esempio, se definiamo una variabile in questo modo:

var name = "Coddy"

Possiamo rappresentarla in memoria così:


 

Per poter ottenere un qualsiasi valore dalla memoria, abbiamo bisogno di un indirizzo. L’indirizzo ci indica dove si trova questo spazio in memoria.

Un puntatore, invece, è una scatola in cui memorizziamo l’indirizzo di memoria anziché il valore. Ecco perché lo chiamiamo puntatore: punta a un indirizzo di memoria.

La sintassi per definire un puntatore è la seguente:

var name = "Coddy"
namePointer := &name

Qui definiamo un puntatore chiamato namePointer e usiamo & per puntare all’indirizzo della variabile name.

Possiamo definire un nuovo puntatore con il valore predefinito, che è nil, in questo modo:

var coddy *string

Questa sintassi * crea un nuovo puntatore chiamato coddy di tipo string, e il valore predefinito di un puntatore è nil.

Per stampare l’indirizzo memorizzato nel puntatore, basta passare il nome del puntatore in questo modo:

fmt.Println(coddy)

Per stampare il valore memorizzato all’indirizzo indicato dal puntatore, usiamo un asterisco *:

fmt.Println(*coddy)
challenge icon

Sfida

Facile
  • Dichiara una variabile chiamata a con valore 200.
  • Dichiara un nuovo puntatore chiamato aPointer di tipo int.
  • Assegna l'indirizzo della variabile a al puntatore aPointer.
  • Stampa il valore del puntatore aPointer e della variabile a.

Provalo tu

package main

import "fmt"

func main() {
    // Dichiara una variabile chiamata a con valore 200.
     

    // Dichiara un nuovo puntatore chiamato aPointer di tipo int.
    
    // Assegna l'indirizzo della variabile a al puntatore aPointer.
     

    // Stampa il valore del puntatore aPointer e della variabile a.
    fmt.Println("the value of the pointer:",?)
    fmt.Println("the value of the variable :",?)
}

Tutte le lezioni di Funzioni e puntatori in Golang

Esercitati da solo: Compilatore Go online