Eliminare un elemento
Lezione 14 di 21 del corso Slice e mappe in GoLang di Coddy.
Finora abbiamo imparato ad aggiungere elementi a una slice, a copiare una slice, a confrontare le slice e a ottenere la lunghezza di una slice.
Ora la domanda è: come possiamo eliminare un elemento specifico da una slice?
Purtroppo non esiste una funzione integrata per questo compito, ma combinando ciò che abbiamo imparato possiamo eseguire questa operazione.
Supponiamo di avere una slice come questa:
books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}Riesci a pensare a cosa possiamo fare se abbiamo bisogno di ottenere una nuova slice senza un elemento specifico, ad esempio rimuovendo "PostgreSQL"?
Qui possiamo usare gli operatori delle slice, se te lo ricordi:
books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}
fmt.Println(books[:4])
fmt.Println(books[5:])Otterremo due slice come queste:
[Golang JavaScript Java Python]
[TypeScript]Abbiamo rimosso correttamente l'elemento "PostgreSQL", ma dobbiamo combinare queste slice in una. Quindi possiamo usare la funzione <strong>append</strong> per concatenare le due slice:
books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}
books = append(books[:4], books[5:]...)
fmt.Println(books)In questo codice usiamo la funzione <strong>append</strong> per aggiungere la seconda slice (<strong>books[5:]</strong>) alla prima parte (<strong>books[:4]</strong>). Nota che usiamo <strong>...</strong> per convertire la seconda parte in singoli elementi da aggiungere alla prima parte.
Il risultato sarà:
[Golang JavaScript Java Python TypeScript]Abbiamo rimosso correttamente l'elemento "PostgreSQL" dalla slice <strong>books</strong>.
Sfida
FacileScrivi un programma che acquisisca un input dall'utente ed elimini dalla slice l'elemento il cui indice è rappresentato dal numero fornito dall'utente.
Provalo tu
package main
import "fmt"
func main() {
// Acquisisci l'input dall'utente Non modificare questo!
var x int
fmt.Scanln(&x)
// Definisci una slice Non modificare questo!
lang := []string{"Rust", "Java", "JavaScript", "Golang", "Haskell", "C#"}
// Elimina l'elemento all'indice specificato
// Stampa la slice aggiornata
}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