Go, conosciuto anche come Golang, è un linguaggio di programmazione sviluppato da Google che combina la semplicità della sintassi con la potenza di un linguaggio compilato. Uno dei concetti fondamentali in Go, come in molti altri linguaggi di programmazione, è quello degli array. In questo articolo, esploreremo cosa sono gli array, come si dichiarano, come si utilizzano e alcune delle loro caratteristiche uniche in Go.

Cosa sono gli Array?

Un array è una struttura dati che consente di memorizzare una collezione di elementi dello stesso tipo. Gli array in Go hanno una dimensione fissa, il che significa che una volta definita la dimensione dell’array, non può essere modificata. Questo è diverso da altre strutture dati come le slice, che sono dinamiche e possono cambiare dimensione durante l’esecuzione del programma.

Dichiarazione di un Array

In Go, un array viene dichiarato specificando il tipo degli elementi e il numero di elementi che può contenere. La sintassi generale per dichiarare un array è la seguente:

var nomeArray [dimensione]tipo

Ad esempio, per dichiarare un array di 5 interi, si scriverebbe:

var numeri [5]int

In questo caso, numeri è un array che può contenere 5 valori di tipo int.

Inizializzazione di un Array

Un array può essere inizializzato al momento della dichiarazione. Ecco un esempio:

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

In questo caso, l’array numeri viene inizializzato con i valori 1, 2, 3, 4, 5.

Go permette anche di inizializzare solo alcuni elementi dell’array, lasciando gli altri con il valore zero del tipo specificato. Ad esempio:

numeri := [5]int{1, 2}

In questo caso, l’array numeri avrà i primi due elementi inizializzati a 1 e 2, mentre gli altri elementi saranno 0 (il valore zero per il tipo int).

Accesso agli Elementi di un Array

Per accedere agli elementi di un array, si utilizza l’indice dell’elemento. Gli indici in Go partono da 0. Ad esempio, per accedere al primo elemento dell’array numeri, si scriverebbe:

primoElemento := numeri[0]

Per modificare un elemento dell’array, si può fare riferimento all’indice e assegnare un nuovo valore:

numeri[0] = 10

Dopo questa operazione, il primo elemento dell’array numeri sarà 10.

Lunghezza di un Array

La lunghezza di un array, ovvero il numero di elementi che può contenere, può essere ottenuta utilizzando la funzione len():

lunghezza := len(numeri)

In questo caso, lunghezza sarà 5, poiché l’array numeri è stato dichiarato con 5 elementi.

Iterazione su un Array

Per iterare su tutti gli elementi di un array, si può utilizzare un ciclo for insieme alla funzione len(). Ecco un esempio:

for i := 0; i < len(numeri); i++ {
    fmt.Println(numeri[i])
}

In alternativa, Go supporta anche l’uso del ciclo for con range, che semplifica l’iterazione:

for indice, valore := range numeri {
    fmt.Printf("Indice: %d, Valore: %d\n", indice, valore)
}

In questo caso, indice rappresenta l’indice dell’elemento corrente, mentre valore rappresenta il valore dell’elemento.

Array Multidimensionali

Go supporta anche array multidimensionali, ovvero array di array. Ad esempio, per dichiarare una matrice 2×3 di interi, si può scrivere:

var matrice [2][3]int

Questa matrice ha 2 righe e 3 colonne. Per inizializzare una matrice, si può fare:

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

Per accedere agli elementi di una matrice, si utilizzano due indici:

valore := matrice[0][1]  // Accesso all'elemento nella prima riga e seconda colonna

Passaggio di Array a Funzioni

In Go, gli array sono passati per valore alle funzioni. Questo significa che quando si passa un array a una funzione, viene creata una copia dell’array, e le modifiche apportate all’array all’interno della funzione non influenzano l’array originale. Ecco un esempio:

func modificaArray(arr [5]int) {
    arr[0] = 100
}

func main() {
    numeri := [5]int{1, 2, 3, 4, 5}
    modificaArray(numeri)
    fmt.Println(numeri)  // Output: [1 2 3 4 5]
}

In questo caso, l’array numeri non viene modificato dalla funzione modificaArray.

Limiti degli Array

Gli array in Go hanno alcune limitazioni:

  1. Dimensione Fissa: La dimensione di un array deve essere conosciuta al momento della compilazione e non può essere cambiata durante l’esecuzione del programma.
  2. Passaggio per Valore: Come visto in precedenza, gli array sono passati per valore alle funzioni, il che può essere inefficiente per array di grandi dimensioni.

Per superare queste limitazioni, Go offre le slice, che sono più flessibili e dinamiche.

Conclusioni

Gli array sono una struttura dati fondamentale in Go, utile per memorizzare collezioni di elementi dello stesso tipo. Tuttavia, a causa della loro dimensione fissa e del passaggio per valore, sono spesso sostituiti dalle slice in molti contesti. Tuttavia, comprendere gli array è essenziale per padroneggiare Go e per apprezzare la flessibilità delle slice.

In questo articolo, abbiamo esplorato come dichiarare, inizializzare, accedere e iterare sugli array, oltre a discutere alcune delle loro limitazioni. Con questa conoscenza, sei ora pronto per utilizzare gli array nei tuoi programmi Go e per esplorare ulteriormente le potenzialità di questo potente linguaggio di programmazione.