Sobes.tech
Junior — Middle

Come creare e inizializzare correttamente le slice in Go?

sobes.tech AI

Risposta dell'AI

In Go, gli slice sono strutture di dati dinamiche che rappresentano un riferimento a un array con una lunghezza e una capacità specificate.

Gli slice possono essere creati e inizializzati in diversi modi:

  1. Dichiarazione di uno slice senza inizializzazione (slice nullo):
var s []int // slice nullo, lunghezza e capacità 0
  1. Inizializzazione di uno slice usando un literal:
s := []int{1, 2, 3} // slice di lunghezza 3
  1. Creazione di uno slice usando la funzione make:
s := make([]int, 5) // slice di lunghezza 5, riempito di zeri
s2 := make([]int, 3, 10) // lunghezza 3, capacità 10

La funzione make alloca un array dietro le quinte e restituisce uno slice che punta ad esso.

  1. Creazione di uno slice da un array:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // slice degli elementi con indici 1,2,3

È importante ricordare che gli slice sono riferimenti ad array, quindi modificare gli elementi dello slice modifica anche l'array originale.

Esempio di utilizzo:

package main
import "fmt"

func main() {
    s := make([]int, 3, 5)
    fmt.Println(s)       // [0 0 0]
    fmt.Println(len(s))  // 3
    fmt.Println(cap(s))  // 5

    s = append(s, 4, 5)
    fmt.Println(s)       // [0 0 0 4 5]
    fmt.Println(len(s))  // 5
    fmt.Println(cap(s))  // 5
}

Questo approccio consente di lavorare in modo efficiente con array dinamici in Go.