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 := &nameQui 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 *stringQuesta 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)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
1Introduzione
Introduzione4Ricostruire le funzioni Strings di Go
Stringhe in GolangFunzione JoinFunzione ContainsFunzione IndexSfida di ripasso #15Ricostruire le funzioni delle slice in Go
Funzione di uguaglianzaFunzione di lunghezzaSfida di riepilogo n. 1Esercitati da solo: Compilatore Go online