Menu
Coddy logo textTech

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:


challenge icon

Sfida

Facile

Usando 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

Esercitati da solo: Compilatore Go online