Go Academy · 강의

break, continue 및 레이블

반복문 제어 흐름과 레이블이 지정된 break

레슨 4/412개 단계

break, continue 및 레이블은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

반복문 제어 기초

Go는 반복문 실행을 제어하는 세 가지 키워드를 제공합니다:

  • break — 현재 반복문 또는 switch를 종료합니다
  • continue — 다음 반복으로 건너뜁니다
  • goto — 레이블이 지정된 문으로 이동합니다(거의 사용하지 않음)

레이블을 사용하면 바깥쪽 반복문에도 break와 continue를 적용할 수 있습니다.

반복문에서의 break

break는 가장 안쪽의 for, switch, 또는 select 문을 즉시 종료합니다:

for i := 0; i < 100; i++ {
    if i*i > 50 {
        break
    }
    fmt.Println(i)
}

continue

continue는 현재 반복문 본문의 나머지 부분을 건너뛰고 후처리 문(또는 조건 확인)으로 이동합니다:

for i := 0; i < 10; i++ {
    if i%2 == 0 {
        continue // skip even numbers
    }
    fmt.Println(i) // prints 1,3,5,7,9
}

레이블이 지정된 break

for 반복문 앞에 레이블을 지정하면 안쪽 반복문에서 해당 반복문을 빠져나올 수 있습니다:

search:
for i, row := range grid {
    for j, cell := range row {
        if cell == target {
            fmt.Printf("found at %d,%d\n", i, j)
            break search
        }
    }
}

레이블이 지정된 continue

레이블이 지정된 continue는 레이블이 지정된 바깥쪽 반복문의 다음 반복으로 건너뜁니다:

outer:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if j == 1 {
            continue outer
        }
        fmt.Printf("%d,%d\n", i, j)
    }
}

레이블을 사용할 시점

다음과 같은 경우에 레이블을 사용하는 것이 적절합니다:

  • 깊이 중첩된 위치에서 중첩 반복문을 빠져나와야 하는 경우
  • 함수로 추출하면 코드가 지나치게 장황해지는 경우

Go에서는 레이블을 흔히 사용하지 않습니다. 레이블이 자주 필요하다면 함수나 채널을 사용하여 리팩터링하는 것을 고려해 보십시오.

goto(드문 경우)

Go에는 레이블이 지정된 문으로 이동하는 goto가 있습니다. 같은 함수 안에서만 사용할 수 있으며 변수 선언을 건너뛸 수는 없습니다:

  • 사용 사례: 생성된 코드, 긴밀한 오류 처리 반복문
  • 직접 작성하는 코드에서는 피하고 구조화된 제어 흐름을 우선합니다

select에서의 break

select 문 안에서 break는 바깥쪽 for 반복문이 아니라 select를 종료합니다. 바깥쪽 반복문을 종료하려면 레이블이 지정된 break를 사용합니다:

loop:
for {
    select {
    case msg := <-ch:
        handle(msg)
    case <-done:
        break loop
    }
}

깊은 중첩 피하기

반복문이 깊게 중첩되면 읽기 어렵습니다. 레이블이 지정된 break를 추가하기 전에 다음을 확인해 보십시오:

  • 안쪽 반복문을 도우미 함수로 추출할 수 있습니까?
  • 채널이나 슬라이스를 사용하여 순회를 단순화할 수 있습니까?
  • 조기 반환으로 바깥쪽의 중첩을 줄일 수 있습니까?

실전 패턴: break를 사용한 검색

일반적인 패턴은 컬렉션을 검색하다가 원하는 항목을 찾으면 중단하는 것입니다:

func contains(slice []string, target string) bool {
    for _, v := range slice {
        if v == target {
            return true // prefer return over break+flag
        }
    }
    return false
}

빠른 확인

Go에서 안쪽 반복문 안에서 바깥쪽 반복문을 어떻게 종료합니까?

복습: break, continue와 레이블

Go에서 반복문 흐름을 효과적으로 제어하는 방법입니다:

  • break는 현재 반복문 또는 switch를 종료합니다
  • continue는 다음 반복으로 건너뜁니다
  • 레이블을 사용하면 break/continue의 대상을 바깥쪽 반복문으로 지정할 수 있습니다
  • goto도 있지만 관용적인 Go 코드에서는 거의 사용하지 않습니다
  • select 안에서 바깥쪽 for 반복문을 종료하려면 레이블이 지정된 break를 사용합니다

다음 과정: 함수와 여러 반환 값입니다.

무료로 시작

AI 튜터와 함께 Go을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
51
레슨
203

자주 묻는 질문

“break, continue 및 레이블” 강의는 무료인가요?

네 — “break, continue 및 레이블” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“break, continue 및 레이블”에서 뭘 배우나요?

반복문 제어 흐름과 레이블이 지정된 break 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Go Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“break, continue 및 레이블” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. if 문과 초기화 식
  2. for 반복문: 모든 패턴
  3. Go의 switch 문
  4. break, continue 및 레이블
← Go Academy(으)로 돌아가기