Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Domanda >> PC Risoluzione dei problemi >> .

Come utilizzare i puntatori in Golang [Tutorial completo]

I puntatori in Go sono un potente strumento per la gestione della memoria e la manipolazione dei dati. Forniscono un modo per fare riferimento direttamente all'indirizzo di memoria di una variabile, consentendo un accesso e una manipolazione efficienti delle strutture dati.

Cos'è un puntatore?

In Go, un puntatore è una variabile che memorizza l'indirizzo di un'altra variabile. L'indirizzo è la posizione di memoria univoca in cui è archiviata la variabile. I puntatori vengono creati utilizzando l'operatore "&", che restituisce l'indirizzo di una variabile.

Ad esempio, supponiamo di avere una variabile "numero" di tipo "int". Possiamo creare un puntatore a "numero" utilizzando l'operatore "&":

"vai."

numero:=10

puntatore :=&numero

```

La variabile "pointer" ora memorizza l'indirizzo di memoria della variabile "number".

Dereferenziare un puntatore

Per accedere al valore di un puntatore, possiamo utilizzare l'operatore `*`. L'operatore "*" dereferenzia un puntatore, restituendo il valore memorizzato nell'indirizzo di memoria contenuto nel puntatore.

Nel nostro esempio, possiamo dereferenziare la variabile `pointer` per accedere al valore della variabile `number`:

"vai."

dereferencedNumber :=*pointer

```

La variabile "dereferencedNumber" ora memorizza il valore della variabile "number", che è 10.

Aritmetica del puntatore

I puntatori possono essere utilizzati anche per eseguire l'aritmetica dei puntatori. L'aritmetica dei puntatori è il processo di aggiunta o sottrazione di numeri interi da un puntatore per modificare l'indirizzo di memoria a cui fa riferimento.

Ad esempio, supponiamo di avere un array di numeri interi chiamato "arr" e di voler scorrere gli elementi dell'array. Possiamo usare l'operatore `+` per aggiungere un numero intero a un puntatore per passare all'elemento successivo dell'array:

"vai."

arr :=[5]int{1, 2, 3, 4, 5}

// Inizializza un puntatore al primo elemento dell'array

puntatore :=&arr[0]

// Itera attraverso l'array utilizzando l'aritmetica dei puntatori

per i :=0; io // Dereferenzia il puntatore per ottenere il valore dell'indice corrente

valore :=*puntatore

// Stampa il valore

fmt.Println(valore)

// Incrementa il puntatore per spostarsi all'elemento successivo dell'array

puntatore++

}

```

In questo esempio, il puntatore "pointer" è inizialmente impostato sull'indirizzo del primo elemento dell'array. Quindi, il ciclo "for" scorre l'array, dereferenziando il "puntatore" a ogni iterazione per ottenere il valore dell'elemento corrente. Il "puntatore" viene quindi incrementato per spostarsi all'elemento successivo dell'array.

Passaggio di puntatori alle funzioni

I puntatori possono essere passati come argomenti alle funzioni. Ciò consente alle funzioni di manipolare direttamente l'indirizzo di memoria delle variabili, anziché creare una copia della variabile.

Ad esempio, supponiamo di avere una funzione chiamata "incremento" che incrementa il valore di un numero intero. Possiamo passare un puntatore a un numero intero come argomento alla funzione "incremento", consentendo alla funzione di modificare direttamente il valore del numero intero:

"vai."

funzione incremento(ptr *int) {

// Dereferenzia il puntatore per ottenere il valore all'indirizzo di memoria

valore :=*ptr

// Incrementa il valore

valore++

// Memorizza nuovamente il valore incrementato nell'indirizzo di memoria

*ptr =valore

}

funzione principale() {

// Crea una variabile intera

numero:=10

// Passa un puntatore alla variabile come argomento alla funzione di incremento

incremento(&numero)

// Stampa il valore incrementato

fmt.Println(numero) // Risultato:11

}

```

In questo esempio, la funzione "incremento" accetta un puntatore a un numero intero come argomento. La funzione dereferenzia il puntatore per ottenere il valore all'indirizzo di memoria, incrementa il valore,

 

Domanda © www.354353.com