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-unswitchsauselectdin buclă crezând că oprește bucla: folosește o etichetă saureturn.- 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ă.