Bird
Raised Fist0
Goprogramming~10 mins

Labelled break and continue in Go - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Labelled break and continue
Start Outer Loop
↓
Start Inner Loop
↓
Check Condition
↓
Labelled break/continue
↓
Exit or Continue
↩Back to Outer Loop or Exit
The outer loop starts, then the inner loop runs. When a labelled break or continue is hit, control jumps to the labelled loop, either exiting or continuing it.
Execution Sample
Go
Outer:
for i := 1; i <= 3; i++ {
  for j := 1; j <= 3; j++ {
    if j == 2 {
      break Outer
    }
  }
}
This code breaks out of the outer loop when inner loop variable j equals 2.
Execution Table
StepijCondition j==2?ActionLoop State
111NoContinue inner loopInner loop running
212Yesbreak OuterExit outer loop
3----Loops terminated
💡 At step 2, j==2 is true, so break Outer exits the outer loop immediately.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
i11--
j12--
Key Moments - 2 Insights
Why does break Outer exit both loops instead of just the inner loop?
Because the break is labelled with Outer, it tells Go to exit the loop named Outer, not just the current inner loop. See execution_table step 2 where break Outer ends both loops.
What happens if we use continue Outer instead of break Outer?
continue Outer skips the rest of the current iteration of the Outer loop and starts the next iteration. It does not exit the loop. This changes the flow compared to break Outer.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of i when break Outer is executed?
A1
B2
C3
D-
💡 Hint
Check the 'i' column at step 2 in the execution_table.
At which step does the program exit all loops?
AStep 1
BStep 2
CStep 3
DNever
💡 Hint
Look at the 'Action' and 'Loop State' columns in execution_table rows.
If we replace break Outer with continue Outer, what happens at step 2?
AContinue inner loop normally
BExit both loops
CSkip to next iteration of Outer loop
DInfinite loop
💡 Hint
Refer to key_moments explanation about continue Outer behavior.
Concept Snapshot
Labelled break and continue in Go:
- Use labels to name loops: Label:
- break Label exits the named loop immediately.
- continue Label skips to next iteration of named loop.
- Helps control nested loops clearly.
- Syntax: break Label or continue Label
Full Transcript
This example shows how labelled break and continue work in Go. We have an outer loop named Outer and an inner loop inside it. When the inner loop variable j equals 2, break Outer is executed. This causes the program to exit the outer loop immediately, stopping both loops. The execution table traces each step: at step 1, j is 1 and the loop continues; at step 2, j is 2, condition is true, and break Outer exits the loops. The variable tracker shows how i and j change. Key moments clarify why break Outer exits both loops and what continue Outer would do instead. The visual quiz tests understanding of loop variables and control flow. The snapshot summarizes the syntax and behavior of labelled break and continue in Go.

Practice

(1/5)
1. What is the main purpose of using a labelled break in Go nested loops?
easy
A. To declare a new variable inside the loop
B. To exit from an outer loop directly
C. To restart the entire program
D. To skip the current iteration of the inner loop

Solution

  1. Step 1: Understand labelled break usage

    A labelled break lets you exit a specific loop, usually an outer one, directly from inside nested loops.
  2. Step 2: Compare with normal break

    Normal break exits only the innermost loop, but labelled break can exit outer loops by specifying the label.
  3. Final Answer:

    To exit from an outer loop directly -> Option B
  4. Quick Check:

    Labelled break = exit outer loop [OK]
Hint: Labelled break jumps out of outer loops directly [OK]
Common Mistakes:
  • Thinking break skips iteration instead of exiting loop
  • Confusing labelled break with continue
  • Assuming break restarts loops
2. Which of the following is the correct syntax to use a labelled continue in Go?
easy
A. continue labelName
B. continue to labelName
C. continue(labelName)
D. continue; labelName

Solution

  1. Step 1: Recall labelled continue syntax

    In Go, to continue a labelled loop, you write continue labelName without parentheses or extra keywords.
  2. Step 2: Check other options

    Options A, B, and D use incorrect syntax like extra words, parentheses, or semicolons which are invalid in Go.
  3. Final Answer:

    continue labelName -> Option A
  4. Quick Check:

    Labelled continue syntax = continue labelName [OK]
Hint: Use 'continue' followed by label name without punctuation [OK]
Common Mistakes:
  • Adding parentheses around label
  • Using extra words like 'to' or semicolons
  • Confusing break and continue syntax
3. What will be the output of the following Go code?
outer:
for i := 1; i <= 3; i++ {
    for j := 1; j <= 3; j++ {
        if i*j > 3 {
            break outer
        }
        fmt.Print(i*j, " ")
    }
}
medium
A. 1 2 3 2
B. 1 2 3 2 4 6 3 6 9
C. 1 2 2 3
D. 1 2 2 3 3

Solution

  1. Step 1: Trace the nested loops and condition

    For i=1, j=1 to 3: i*j = 1,2,3 (all ≤ 3), so prints "1 2 3 ". For i=2, j=1: i*j=2 (≤3), prints "2 ". Next j=2: i*j=4 (>3), triggers break outer which exits the outer loop immediately.
  2. Step 2: Understand break outer effect

    Since break outer exits both loops, no further printing occurs after i=2, j=2 check.
  3. Final Answer:

    1 2 3 2 -> Option A
  4. Quick Check:

    Labelled break exits outer loop at i*j>3 [OK]
Hint: Labelled break exits all loops at condition [OK]
Common Mistakes:
  • Ignoring labelled break effect and continuing loops
  • Confusing break with continue
  • Miscomputing i*j values
4. Identify the error in this Go code snippet using labelled continue:
outer:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i == j {
            continue
        }
        fmt.Println(i, j)
    }
}
medium
A. continue cannot be used inside nested loops
B. Label 'outer' is not defined before the loops
C. Missing label after continue to specify which loop to continue
D. fmt.Println syntax is incorrect

Solution

  1. Step 1: Check labelled continue usage

    The code defines label 'outer' but uses plain continue inside inner loop. To continue the outer loop, it must be continue outer.
  2. Step 2: Understand effect of missing label

    Without label, continue only skips current inner loop iteration, not the outer loop. The label is unused, which is likely a mistake.
  3. Final Answer:

    Missing label after continue to specify which loop to continue -> Option C
  4. Quick Check:

    Labelled continue needs label after continue [OK]
Hint: Use label after continue to affect outer loops [OK]
Common Mistakes:
  • Using continue without label when label is defined
  • Assuming continue skips outer loop without label
  • Confusing label placement
5. Given nested loops labelled outer and inner, how would you skip the rest of the current iteration of the outer loop from inside the inner loop in Go?
hard
A. Use break inner inside the inner loop
B. Use break outer inside the outer loop
C. Use continue inner inside the outer loop
D. Use continue outer inside the inner loop

Solution

  1. Step 1: Understand labelled continue behavior

    Using continue outer inside the inner loop skips the rest of the current iteration of the outer loop and moves to the next iteration of the outer loop.
  2. Step 2: Differentiate from break and other options

    break inner exits the inner loop, but does not skip outer loop iteration. continue inner affects inner loop only. break outer exits the outer loop entirely.
  3. Final Answer:

    Use continue outer inside the inner loop -> Option D
  4. Quick Check:

    Labelled continue skips outer loop iteration [OK]
Hint: Use 'continue' with outer label to skip outer iteration [OK]
Common Mistakes:
  • Using break instead of continue to skip iteration
  • Applying continue to wrong loop label
  • Confusing break and continue effects
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard