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]Sfida
FacileScrivi 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
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