continue în Go

Sare peste restul iterației curente și trece la următoarea iterație a buclei for.

Sintaxă
continue
continue Eticheta

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-un switch fără buclă: este eroare de compilare, continue merge doar în for.

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.