Редактировать: Вы отредактировали свой код, поэтому вот отредактированный ответ для этого.
Чтобы продолжить внешний l oop из внутреннего (ломая внутренний l oop и пропуская остальную часть внешнего l oop), вы должны продолжить внешнее l oop.
. Чтобы обратиться к внешнему l oop с помощью оператора continue
, используйте метку:
outer:
for i := 0; i < 2; i++ {
for j := 0; j < 4; j++ {
if j == 2 {
fmt.Println("Breaking out of loop")
continue outer
} else {
fmt.Println("j = ", j)
}
}
fmt.Println("The value of i is", i)
}
Будет выведено (попробуйте на Go Детская площадка ):
j = 0
j = 1
Breaking out of loop
j = 0
j = 1
Breaking out of loop
Оригинальный ответ:
break
всегда разрывается от самого внутреннего l oop (точнее, for
, switch
или select
), поэтому после этого внешний l oop продолжит свою следующую итерацию.
Если вы есть вложенные циклы и из внутреннего l oop, который вы хотите оторвать от внешнего l oop, вы должны использовать метки:
outer:
for i := 0; i < 2; i++ {
for j := 0; j < 4; j++ {
if j == 2 {
fmt.Println("Breaking out of loop")
break outer
}
fmt.Println("The value of j is", j)
}
}
Это выведет (попробуйте на Go Детская площадка ):
The value of j is 0
The value of j is 1
Breaking out of loop