Menu
Coddy logo textTech

Dichiarare variabili puntatore

Fa parte della sezione Fondamenti del percorso GO di Coddy. Lezione 61 di 109.

In Go, puoi dichiarare i puntatori in due modi principali: usando var con un tipo puntatore oppure usando l’operatore indirizzo con :=.

Dichiara un puntatore usando var con un tipo puntatore:

func main() {
    var x int = 42
    var ptr *int    // Dichiara un puntatore a un intero
    ptr = &x        // Assegna l'indirizzo di x a ptr
    
    fmt.Println("Value of x:", x)
    fmt.Println("Value of ptr:", ptr)
    fmt.Println("Value at ptr:", *ptr)
}

L'output mostra che il puntatore memorizza l'indirizzo di x:

Value of x: 42
Value of ptr: 0xc000018030
Value at ptr: 42

Puoi anche dichiarare e inizializzare un puntatore in una sola riga usando :=:

y := 100
ptr := &y    // Dichiara e inizializza il puntatore in un solo passaggio
challenge icon

Sfida

Principiante

In questa sfida, ti eserciterai a dichiarare e usare i puntatori in Go. È già stato predisposto un puntatore e il tuo compito è creare un nuovo puntatore che punti allo stesso valore.

Completa il TODO nel codice per dichiarare una nuova variabile puntatore chiamata 'secondPointer' che punti allo stesso indirizzo di memoria del puntatore esistente.

Provalo tu

package main

import "fmt"

func main() {
	// Ecco una variabile e un puntatore a essa
	originalValue := 42
	pointerToValue := &originalValue
	
	// TODO: Dichiara una nuova variabile puntatore chiamata 'secondPointer' 
	// che punti allo stesso indirizzo di memoria di 'pointerToValue'
	
	
	// Non modificare il codice qui sotto
	fmt.Printf("Original value: %v\n", originalValue)
	fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
	fmt.Printf("Value through second pointer: %v\n", *secondPointer)
	
	// Cambiamo il valore originale e osserviamo come tutti i puntatori riflettano la modifica
	originalValue = 100
	fmt.Printf("\nAfter changing original value to 100:\n")
	fmt.Printf("Original value: %v\n", originalValue)
	fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
	fmt.Printf("Value through second pointer: %v\n", *secondPointer)
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Go online