Sobes.tech
Senior

Cos'è uno slice e come si differenzia da un array?

sobes.tech AI

Risposta dell'AI

In Go, un array è una struttura di dimensione fissa che contiene elementi dello stesso tipo. La dimensione dell'array viene impostata durante la dichiarazione e non può essere modificata durante l'esecuzione del programma.

Lo slice è una porzione dinamica e modificabile dell'array. È una struttura che contiene un puntatore all'array, la lunghezza e la capacità. Gli slice permettono di lavorare con sottoinsiemi dell'array e di espandersi automaticamente quando necessario.

Principali differenze:

  • Dimensione: l'array ha una dimensione fissa, lo slice è dinamico.
  • Passaggio: gli array vengono passati per valore (copiati), gli slice per riferimento (puntatore all'array).
  • Flessibilità: lo slice può essere esteso usando la funzione append, l'array no.

Esempio:

var arr [3]int = [3]int{1, 2, 3} // array di dimensione fissa

var s []int = arr[0:2] // slice che fa riferimento a una parte dell'array

s = append(s, 4) // lo slice si espande, e se necessario, viene creato un nuovo array