Iterare su una slice
Lezione 9 di 21 del corso Slice e mappe in GoLang di Coddy.
Proprio come abbiamo fatto con gli array, possiamo iterare su una slice usando un ciclo for. Facciamo un esempio che lo dimostri:
Supponiamo di avere una slice come questa:
str := []string{"Python","Golang","Rust","JavaScript","Haskell"}
for i := 0; i < len(str); i++ {
fmt.Println(i, str[i])
}Qui iteriamo da 0 alla lunghezza della slice usando la funzione <strong>len()</strong> e otterremo il risultato:
0 Python
1 Golang
2 Rust
3 JavaScript
4 HaskellFin qui nulla di nuovo, ma usiamo una nuova parola chiave chiamata <strong>range</strong>, che ci permetterà di iterare sulla slice. La sintassi dovrebbe essere questa:
for index, value := range str {
fmt.Println(index, value)
}Nel nostro esempio, <strong>range</strong> viene usato per iterare sugli elementi della slice <strong>str</strong>, fornendo sia l'indice sia il valore corrispondente a quell'indice a ogni iterazione.
E dovremmo ottenere lo stesso risultato di prima:
0 Python
1 Golang
2 Rust
3 JavaScript
4 HaskellSe non ci serve l'indice, possiamo ometterlo usando un underscore al posto di una variabile:
for _, value := range str {
fmt.Println(value)
}
Sfida
FacileNel codice fornito, definiamo una slice di numeri interi.
- Usando la parola chiave
<strong>range</strong>per iterare sulla slice, controlla ogni numero per determinare se è pari - Se un numero è pari, aggiungilo a una variabile che conterrà la somma dei numeri pari
Provalo tu
package main
import "fmt"
func main() {
// Slice di 10 numeri. Non modificarlo!
numbers := []int{45, 60, 3, 4, 5, 80, 7, 8, 9, 10}
// Inizializza una variabile per contenere la somma dei numeri pari
var sum int
// Scorri lo slice
// Controlla se il numero è pari
// Se lo è, aggiungilo alla somma
// Stampa la somma sullo schermo
fmt.Println("Sum of even numbers:", sum)
}Tutte le lezioni di Slice e mappe in GoLang
1Introduzione
IntroduzioneEsercitati da solo: Compilatore Go online