break în Go

Oprește imediat cea mai apropiată buclă for, switch sau select; cu etichetă oprește o buclă exterioară.

Sintaxă
break
break Eticheta

Ce face break

break iese imediat din cea mai apropiată instrucțiune for, switch sau select, iar programul continuă cu ce urmează după ea.

Atenție: într-un switch aflat într-o buclă, break iese doar din switch, nu și din buclă. Pentru a ieși dintr-o buclă exterioară pui o etichetă înaintea ei (Cautare:) și scrii break Cautare.

Parametri

Parametru Descriere
Eticheta Opțională. Numele unei bucle (sau al unui switch/select) care conține instrucțiunea; se iese din ea.

Exemple

Exemplul 1: Oprirea la primul rezultat găsit

package main

import "fmt"

func main() {
    note := []int{8, 9, 4, 10, 3}
    for i, n := range note {
        if n < 5 {
            fmt.Printf("prima notă sub 5: %d, la poziția %d\n", n, i)
            break
        }
        fmt.Println("verific", n)
    }
}

Rezultat

verific 8
verific 9
prima notă sub 5: 4, la poziția 2

Exemplul 2: break cu etichetă din bucle imbricate

Fără etichetă, break ar opri doar bucla interioară.

package main

import "fmt"

func main() {
    sali := [][]string{
        {"Ana", "Mihai"},
        {"Ioana", "Radu", "Elena"},
        {"Vlad"},
    }
Cautare:
    for s, sala := range sali {
        for _, nume := range sala {
            if nume == "Radu" {
                fmt.Println("Radu este în sala", s+1)
                break Cautare
            }
        }
    }
    fmt.Println("căutare terminată")
}

Rezultat

Radu este în sala 2
căutare terminată

Exemplul 3: break într-un switch din buclă

Primul break iese doar din switch; eticheta Meniu oprește bucla.

package main

import "fmt"

func main() {
    optiuni := []string{"ajutor", "", "salvează", "ieșire", "șterge"}
Meniu:
    for _, o := range optiuni {
        switch o {
        case "":
            break // iese doar din switch
        case "ieșire":
            fmt.Println("la revedere")
            break Meniu
        default:
            fmt.Println("execut:", o)
        }
    }
}

Rezultat

execut: ajutor
execut: salvează
la revedere

Greșeli frecvente

  • break într-un switch sau select din buclă crezând că oprește bucla: folosește o etichetă sau return.
  • Eticheta pusă pe alt rând decât bucla, cu cod între ele: eticheta trebuie să stea imediat înaintea lui for.

Comenzi înrudite

  • continue: Sare peste restul iterației curente și trece la următoarea iterație a buclei for.
  • for: Singura buclă din Go: forma clasică, forma „while”, bucla infinită și parcurgerea cu range.
  • goto: Sare la o etichetă din aceeași funcție. Rar folosit; for, break și return sunt aproape mereu mai clare.
  • switch, case și default: Alege una din mai multe ramuri după valoarea unei expresii sau după prima condiție adevărată.