Menu
Coddy logo textTech

Slice è un array

Lezione 11 di 21 del corso Slice e mappe in GoLang di Coddy.

Se hai dubbi su come una slice sia collegata a un array, facciamo chiarezza. In Go, una slice è in realtà un riferimento a un array, e questo array è chiamato «array di supporto». Per capirlo, consideriamo un esempio:

Supponiamo di avere una slice come questa:

str := []string{"Coddy", "Learn", "Play", "test"}

Pensi che questa slice str memorizzi direttamente questi quattro elementi? La risposta è no, perché la slice stessa non memorizza direttamente alcun elemento.

Dietro le quinte, quando creiamo una slice in questo modo, Go crea un array in memoria e poi restituisce un valore slice che punta a questo array. Questo array è chiamato array di supporto della slice. Quindi, a memorizzare effettivamente gli elementi è l'array di supporto, non la slice.

Questo array di supporto può essere condiviso tra altre slice. Per esempio:

str := []string{"Coddy", "Learn", "Play", "test"}
slice1 := str[0:3]
slice2 := str[1:4]

In questo esempio, slice1 e slice2 condividono lo stesso array di supporto. Possiamo notare che un'operazione su una slice non crea un nuovo array di supporto; crea invece una slice che fa riferimento a una parte dello stesso array di supporto.

Quindi, in questo esempio, tutte le slice condividono lo stesso array di supporto e possiamo rappresentarlo così:

Ogni volta che apportiamo una modifica alla slice originale, anche le altre slice rifletteranno queste modifiche perché fanno riferimento allo stesso array di supporto. Per esempio, se cambiamo "Learn" in "Fun", sarà così:

Quindi, devi sapere che un letterale di slice (name := []string{}) crea sempre un array di supporto in modo implicito.

Provalo tu

Questa lezione non include una sfida di codice.

Tutte le lezioni di Slice e mappe in GoLang

Esercitati da solo: Compilatore Go online