Menu
Coddy logo textTech

Copiare uno slice

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

In Go, ci sono alcune funzioni integrate che possiamo usare con gli slice e ne abbiamo già usata una nella lezione precedente: la funzione <strong>append</strong>. Ci permette di aggiungere elementi a uno slice esistente. Chiamiamo queste funzioni funzioni helper; puoi aggiungere questo aspetto alle differenze tra array e slice in Go: gli array non hanno queste funzioni.

In questa lezione parleremo della funzione <strong>copy</strong>, che ci permette di copiare uno slice e funziona così:

str := []string{"Python", "Golang", "Java", "TypeScript"}
newStr := make([]string, 4)
copy(newStr, str)
fmt.Println(newStr)

Questo sarà il risultato:

[Python Golang Java TypeScript]

Usando la funzione <strong>copy</strong>, copiamo gli elementi dallo slice <strong>str</strong> allo slice <strong>newStr</strong>. La sintassi è questa: <strong>copy(destination, source)</strong>.

E se la capacità del nuovo slice fosse inferiore a quella dello slice sorgente? Facciamo un esempio:

str := []string{"Python", "Golang", "Java", "TypeScript"}
newStr := make([]string, 3)
copy(newStr, str)
fmt.Println(newStr)

Se lo eseguiamo, otterremo:

[Python Golang Java]

Poiché la capacità del nuovo slice è 3, c'è spazio solo per 3 elementi.

Facciamo un esempio nel caso opposto:

str := []int{23, 34, 56, 77}
newStr := make([]int, 6)
copy(newStr, str)
fmt.Println(newStr)

Qui la capacità del nuovo slice è maggiore di quella dello slice sorgente, quindi il risultato conterrà gli elementi copiati e, per il resto, il valore predefinito, che nel caso di un int è 0:

[23 34 56 77 0 0]
challenge icon

Sfida

Facile

Scrivi un programma che prenda due slice e le unisca in una nuova slice, poi la stampi sullo schermo.

Nel codice fornito, definiamo due slice di interi.

Qui dovrai usare l'operatore slice insieme alla funzione copy.

Consulta i suggerimenti se hai bisogno di ulteriore aiuto.

Provalo tu

package main

import (
	"fmt"
)

func main() {
    // due slice: non modificarle!
	str := []int{1, 2, 3, 4}
	str2 := []int{5, 6, 7, 8}
	// Definisci una nuova slice 
 
    // Copia l'elemento
 
	// Copia usando l'operatore slice
	 
    // Stampa la nuova slice
	fmt.Println()

}

Tutte le lezioni di Slice e mappe in GoLang

Esercitati da solo: Compilatore Go online