특정 루프 계속하기
Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨 — 68개 중 3번째.
break와 함께 레이블을 사용하여 특정 루프를 종료할 수 있는 것과 마찬가지로, Go에서는 continue 문과 함께 레이블을 사용하는 것도 허용합니다. 레이블이 지정된 continue는 지정된 루프의 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다.
이것은 내부 루프 내에서 단순히 내부 루프를 계속하는 대신 외부 루프의 현재 반복의 나머지 부분을 건너뛰고 싶을 때, 중첩된 루프에서 특히 유용합니다.
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 0 {
continue outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
fmt.Println("End of outer loop iteration")
}이 예제에서 i == 1 && j == 0일 때, continue outer 문은 내부 루프와 "End of outer loop iteration" 메시지를 포함하여 외부 루프의 현재 반복의 나머지 부분을 건너뜁니다. 그런 다음 프로그램은 i가 2가 되는 외부 루프의 다음 반복으로 직접 이동합니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
챌린지
쉬움이 챌린지에서는 레이블이 지정된 continue 문을 사용하여 중첩된 루프 실행을 제어하는 연습을 합니다. 내부 루프에서 발견된 조건에 따라 특정 외부 루프 반복을 건너뛰어야 하는 데이터 처리 시스템을 구축하게 됩니다.
두 개의 입력을 받게 됩니다:
- 처리할 행의 수를 나타내는 문자열 (예:
"4") - 건너뛰기 조건 숫자를 나타내는 문자열 (예:
"3")
다음과 같은 2D 데이터 배열이 제공됩니다:
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
}여러분의 과제는 다음과 같습니다:
- 첫 번째 입력에서 행의 수를 파싱하여 처리할 행의 수를 결정합니다.
- 두 번째 입력에서 건너뛰기 조건 숫자를 파싱합니다.
- 레이블이 지정된
continue와 함께 중첩된 루프를 사용하여 데이터를 처리합니다. - 각 행에 대해 해당 행의 각 열 값을 확인합니다.
- 행의 임의의 열에서 건너뛰기 조건 숫자를 발견하면, 레이블이 지정된
continue를 사용하여 해당 행의 나머지 처리를 건너뛰고 다음 행으로 이동합니다. - 건너뛰기 조건 숫자가 포함되지 않은 행의 경우,
"Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"를 출력합니다. - 건너뛰기 조건 숫자가 포함된 행의 경우,
"Skipping row [row_number] due to condition"을 출력합니다.
행 번호는 0부터 시작하는 인덱스(첫 번째 행은 0)를 사용하여 보고해야 합니다. 첫 번째 입력에서 지정된 행 수만큼만 처리하고, 각 행의 처음 5개 열만 확인하십시오.
치트 시트
중첩된 루프에서 특정 루프의 현재 반복을 건너뛰려면 continue와 함께 레이블을 사용하세요:
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 0 {
continue outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
fmt.Println("End of outer loop iteration")
}continue outer가 실행되면, 바깥쪽 루프의 현재 반복의 나머지 부분을 건너뛰고 레이블이 지정된 루프의 다음 반복으로 직접 이동합니다.
직접 해보기
package main
import (
"fmt"
"strconv"
)
func main() {
// 입력 읽기
var rowsInput string
var skipConditionInput string
fmt.Scanln(&rowsInput)
fmt.Scanln(&skipConditionInput)
// 입력 파싱
numRows, _ := strconv.Atoi(rowsInput)
skipCondition, _ := strconv.Atoi(skipConditionInput)
// 제공된 2D 데이터 배열
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25},
}
// TODO: 아래에 코드를 작성하세요
// 데이터를 처리하기 위해 레이블이 지정된 continue와 중첩 루프를 사용하세요
// 각 행에서 건너뛰기 조건 숫자가 있는지 확인하세요
// 조건 발견 여부에 따라 적절한 메시지를 출력하세요
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.