English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un puntatore nel linguaggio di programmazione Go è una variabile che memorizza l'indirizzo di un'altra variabile. Un puntatore è una variabile speciale, quindi può puntare a qualsiasi tipo di variabile. Sembra基本上 una catena di puntatori. Quando si definisce un puntatore che punta a un altro puntatore, il primo puntatore viene utilizzato per memorizzare l'indirizzo del secondo puntatore. Questo concetto a volte viene chiamatoDoppio puntatore.
Come dichiarare un puntatore che punta a un altro puntatore in Golang?
Si dichiara un puntatore come Pointer, simile a dichiarare un puntatore in Go. La differenza sta nel fatto che dobbiamo mettere un altro '' prima del nome del puntatore * Di solito, quando usiamoChiave varE quando si dichiara un variabile di tipo puntatore, si può completare questa operazione.
Esempio 1:Nel seguente programma, il puntatorept2Memorizzazionept1L'indirizzo del puntatore. Richiamopt2Ecco* pt2Verrà fornito il variabilevL'indirizzo, o puoi anche dire puntatorept1Il valore. Se provi a** pt2,Allora verrà fornito il variabilevIl valore, ovvero 100.
package main import "fmt" func main() { //Variabile di tipo intero var V int = 100 //Ottenimento di un puntatore //Di tipo intero var pt1 *int = &V //Ottenimento del puntatore //Indirizzo di memorizzazione del puntatore a pt1 //Conversione di pt1 a pt2 var pt2 **int = &pt1 fmt.Println("Il valore della variabile V è = ", V) fmt.Println("L'indirizzo della variabile V è = ", &V) fmt.Println("Il valore di pt1 è = ", pt1) fmt.Println("L'indirizzo di pt1 è = ", &pt1) fmt.Println("Il valore di pt2 è = ", pt2) //Indirezione //Puntatore a puntatore fmt.Println("Il valore all'indirizzo dell'indirizzo pt2 è (*pt2) = ", *pt2) //I doppi puntatori daranno il valore della variabile V fmt.Println("*(valore all'indirizzo pt2) o **pt2 = ", **pt2) }
Output:
Il valore della variabile V è = 100 L'indirizzo della variabile V è = 0xc000062090 Il valore di pt1 è = 0xc000062090 L'indirizzo di pt1 è = 0xc00008c018 Il valore di pt2 è = 0xc00008c018 Il valore all'indirizzo dell'indirizzo pt2 è (*pt2) = 0xc000062090 *(valore all'indirizzo pt2) o **pt2 = 100
Esempio 2:Facciamo alcune modifiche al programma sopra. Assegniamo nuovi valori ai puntatori utilizzando l'indirezione come segue:
//Go programma per illustrare il concetto di puntatore a puntatore package main import "fmt" func main() { //Definizione di variabile di tipo int var v int = 100 //Puntatore di tipo intero var pt1 *int = &v //Ottenimento del puntatore //Indirizzo di memorizzazione del puntatore a pt1 //Conversione di pt1 a pt2 var pt2 **int = &pt1 fmt.Println("Il valore della variabile v è = ", v) //Modifica del valore di v tramite assegnamento //Nuovo valore del puntatore pt1 *pt1 = 200 fmt.Println("Il valore memorizzato in v dopo aver modificato pt1 = ", v) //Modifica del valore di v tramite assegnamento //Nuovo valore del puntatore pt2 **pt2 = 300 fmt.Println("Il valore memorizzato in v dopo aver modificato pt2 = ", v) }
Output:
Il valore della variabile v è = 100 Il valore memorizzato in v dopo aver modificato pt1 = 200 Il valore memorizzato in v dopo aver modificato pt2 = 300
Conoscenze correlate:Puntatore Go