Ce face continue
continue oprește iterația curentă a unei bucle for și trece direct la următoarea: în forma clasică se execută pasul (i++), apoi se verifică din nou condiția.
Este util pentru a sări peste elementele care nu te interesează fără a pune tot restul buclei într-un if. Cu etichetă (continue Exterior) treci la următoarea iterație a unei bucle exterioare.
Parametri
| Parametru | Descriere |
|---|---|
Eticheta |
Opțională. Numele unei bucle for exterioare. |
Exemple
Exemplul 1: Sărirea peste valorile invalide
package main
import "fmt"
func main() {
temperaturi := []float64{21.5, -999, 23.0, -999, 19.5}
suma, numar := 0.0, 0
for _, t := range temperaturi {
if t == -999 { // senzor defect
continue
}
suma += t
numar++
}
fmt.Printf("media pe %d citiri: %.2f °C\n", numar, suma/float64(numar))
}
Rezultat
media pe 3 citiri: 21.33 °C
Exemplul 2: continue cu etichetă
La primul produs fără stoc (0) trecem direct la următorul magazin, deci Cluj nu ajunge la mesajul final.
package main
import "fmt"
func main() {
magazine := map[string][]int{"Iași": {3, 5, 2}, "Cluj": {4, 0, 7}, "Brașov": {1, 1, 1}}
Magazine:
for _, oras := range []string{"Iași", "Cluj", "Brașov"} {
for _, stoc := range magazine[oras] {
if stoc == 0 {
continue Magazine
}
}
fmt.Println(oras, "are toate produsele")
}
}
Rezultat
Iași are toate produsele
Brașov are toate produsele
Greșeli frecvente
continueîntr-o buclă „while” (for conditie) înainte de a modifica variabila din condiție: bucla poate deveni infinită.continueîntr-unswitchfără buclă: este eroare de compilare,continuemerge doar înfor.
Comenzi înrudite
break: Oprește imediat cea mai apropiată buclă for, switch sau select; cu etichetă oprește o buclă exterioară.for: Singura buclă din Go: forma clasică, forma „while”, bucla infinită și parcurgerea cu range.range: Parcurge într-un for elementele unui slice, array, map, text, canal, număr sau iterator.