Slice con make
Lezione 12 di 21 del corso Slice e mappe in GoLang di Coddy.
Nelle lezioni precedenti, abbiamo creato slice usando i literal di slice. Tuttavia, esiste un'altra funzione chiamata <strong>make</strong>. Ti permette di allocare un array sottostante per uno slice con una lunghezza e una capacità specificate. La ragione per cui esiste una funzione come <strong>make</strong> è che uno slice non ha una lunghezza definita in anticipo. Quindi, la funzione <strong>make</strong> ti permette di creare uno slice con una lunghezza specificata.
Ma non farti ingannare: la sua lunghezza non diventa fissa. Puoi comunque aggiungere elementi.
La sintassi della funzione <strong>make</strong> è la seguente:
mySlice = make([]string, 4)Ti basta usare <strong>make</strong>; il primo argomento (<strong>[]string</strong>) descrive il tipo dello slice, mentre il secondo argomento (<strong>4</strong>) indica a <strong>make</strong> la lunghezza necessaria per il nostro slice. Il secondo argomento descrive anche la capacità dell'array sottostante. Quindi, la lunghezza e la capacità dello slice restituito diventano uguali.
Ora, la domanda è: perché dobbiamo usare la funzione <strong>make</strong> per creare uno slice se possiamo semplicemente usare il semplice literal di slice?
La risposta è che in alcune situazioni dobbiamo aggiungere nuovi valori a uno slice e, se non ha capacità sufficiente, verrà creato un nuovo array sottostante. Questa operazione è un po' costosa in termini di memoria perché richiede una riallocazione. La funzione <strong>make</strong> evita questa riallocazione preallocando spazio in memoria.
Con <strong>make</strong>, possiamo specificare lunghezza e capacità con valori diversi, come in questo esempio:
mySlice = make([]string, 4, 6)In generale, la funzione <strong>make</strong> può essere rappresentata come mostrato di seguito:
Sfida
FacileUsando la funzione <strong>make</strong>, crea una slice chiamata <strong>coddy</strong> con una lunghezza di 4 e una capacità di 5.
- Aggiungi il valore "Learn Golang" all'indice 0.
- Aggiungi il valore "Coddy.tech" all'indice 3.
- Itera su questa slice usando la parola chiave
<strong>range</strong>e stampa l'indice e il valore sullo schermo.
Provalo tu
package main
import "fmt"
func main() {
// Crea la slice coddy con make
// Aggiungi elementi agli indici 0 e 3
// Itera sulla slice coddy
}Tutte le lezioni di Slice e mappe in GoLang
1Introduzione
Introduzione3Le slice dietro le quinte
Slice è un arraySlice con makeCopiare uno sliceEliminare un elementoSfida di ripasso #1Sfida di ripasso #2Esercitati da solo: Compilatore Go online