goto 문을 사용하여 중첩 루프 탈출하기
break를 사용하여 중첩 루프를 종료하는 것은 일반적으로 추가적인 로직과 변수가 필요하므로 번거로울 수 있습니다. goto는 여러 루프에서 직접 점프할 수 있도록 하여 이 프로세스를 단순화합니다.
예시: goto를 사용하여 중첩 루프 종료하기
nested_loop_with_goto.go라는 새 파일을 생성합니다.
cd ~/project
touch nested_loop_with_goto.go
- 다음 코드를 작성합니다.
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ { // Outer loop
for j := 0; j < 5; j++ { // Inner loop
if j == 3 { // Exit condition
goto END // Jump to the "END" label
}
fmt.Println(i, j) // Print the current values of i and j
}
}
END:
}
- 프로그램은 중첩 루프로 시작합니다:
i에 대한 외부 루프와 j에 대한 내부 루프입니다.
- 내부 루프 내에서
j가 3과 같은지 확인합니다. 참이면 프로그램은 END 레이블로 점프하여 두 루프를 모두 종료합니다.
- 결과적으로 프로그램은
j가 2와 같아질 때까지만 (i, j) 쌍을 출력합니다.
- 프로그램을 실행합니다.
go run nested_loop_with_goto.go
- 출력을 확인합니다.
0 0
0 1
0 2
이 접근 방식은 여러 break 문이나 플래그를 사용하는 것보다 훨씬 깔끔하며, 특히 깊이 중첩된 루프에서 유용합니다.
다음과 같이 break 문을 사용하여 이 프로그램을 구현하는 경우:
package main
import "fmt"
func main() {
// Check variable
var check = false
// First loop
for i := 0; i < 5; i++ {
// Second loop
for j := 0; j < 5; j++ {
if j == 3 {
// Exit the second loop
check = true
break
}
fmt.Println(i, j)
}
// Determine whether to exit the first loop
if check == true {
break
}
}
}