Menu
Coddy logo textTech

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 Haskell

Fin 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 Haskell

Se non ci serve l'indice, possiamo ometterlo usando un underscore al posto di una variabile:

for _, value := range str {
   fmt.Println(value)
}

 

challenge icon

Sfida

Facile

Nel 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

Esercitati da solo: Compilatore Go online