반복문- break & continue with label
break label
// EX1)
package main
import "fmt"
func main() {
Loop1:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 1 {
break Loop1
}
fmt.Println(i,j)
}
}
fmt.Println("END")
}
- i가 1이고 j가 1이 될 때 break Loop1을 만남
- Loop1을 빠져나오고, Loop1이 있는 곳으로 이동해 다음 명령어
fmt.Println(”END”)
실행실행결과
0 0 0 1 0 2 1 0 END
// EX2)
package main
import "fmt"
funk main() {
for i := 0; i < 3; i++{
Loop2:
for j := 0; j < 3; j++{
for k :=0; k < 3; k++{
if i == 1 && j == 1 && k == 1{
break Loop2
}
fmt.Println(i,j,k)
}
}
}
fmt.Println("END")
- i, j, k 가 모두 1이 될 때 break Loop2를 만남
- Loop2를 빠져나오고, Loop2가 있는 곳으로 이동
- 다음 명령어 실행 : 다음 for루프 (i=2)부터 시작
실행결과
0 0 0 0 0 1 0 0 1 … 1 1 0 2 0 0 2 0 1 … 2 2 2 END
continue label
// EX1)
Loop3:
for i :=0; i<3; i++ {
for j :=0; j<3; j++ {
if i == 1 && j == 1 {
continue Loop3
}
fmt.Println(i,j)
}
}
- i가 1이고, j가 1이 될 때 continue Loop3을 만남
- Loop3 밑 첫 반복문의 루프를 넘기고( 위 예시의 경우, i가 1인 경우), Loop3이 있는 곳으로 이동
- 다음 루프 (i=2)부터 재개
실행결과
0 0 0 1 0 2 1 0 2 0 2 1 2 2
// EX2)
for i := 0; i < 3; i++ {
Loop4:
for j := 0; j < 3; j++ {
for k :=0; k < 3; k++ {
if i == 1 && j == 1 && k == 1 {
continue Loop4
}
fmt.Println(i,j,k)
}
}
}
- i, j, k가 모두 1이 될 때 break Loop4를 만남
- Loop4 밑 첫 반목문의 루프를 넘기고( 위 예시의 경우, j가 1인 경우), Loop4가 있는 곳으로 이동
- 다음 루프 (i=1, j=2, k=0)부터 재개
실행결과
0 0 0 0 0 1 0 0 2 … 1 1 0 1 2 0 1 2 1 1 2 2 2 0 0 … 2 2 2