What if you could check every possible pair without writing endless repeated steps?
Why Nested loops in Go? - Purpose & Use Cases
Imagine you have a list of friends and a list of their favorite fruits. You want to find all possible friend-fruit pairs by checking each friend with each fruit manually.
Doing this by hand means writing many repeated steps, which is slow and easy to mess up. If you add more friends or fruits, the work grows fast and becomes confusing.
Nested loops let you automate this by running one loop inside another. This way, you can quickly check every friend with every fruit without writing repetitive code.
fmt.Println("Alice likes Apple") fmt.Println("Alice likes Banana") fmt.Println("Bob likes Apple") fmt.Println("Bob likes Banana")
friends := []string{"Alice", "Bob"}
fruits := []string{"Apple", "Banana"}
for _, friend := range friends {
for _, fruit := range fruits {
fmt.Printf("%s likes %s\n", friend, fruit)
}
}Nested loops let you handle complex combinations easily, saving time and avoiding mistakes.
Checking every seat in a theater for availability by rows and columns uses nested loops to cover all seats efficiently.
Manual pairing is slow and error-prone.
Nested loops automate checking all combinations.
This makes your code cleaner and faster.
Practice
for i := 0; i < 3; i++ {
for j := 0; j < 2; j++ {
// code
}
}Solution
Step 1: Understand nested loops structure
The outer loop runs 3 times, and for each outer loop iteration, the inner loop runs 2 times.Step 2: Explain the repetition effect
This means the inner code runs 3 * 2 = 6 times, repeating actions multiple times inside another loop.Final Answer:
Runs one loop inside another to repeat code multiple times -> Option AQuick Check:
Nested loops repeat code multiple times [OK]
- Thinking loops run sequentially without nesting
- Assuming inner loop runs only once
- Believing nested loops cause infinite loops automatically
Solution
Step 1: Check correct nested loop syntax
for i := 0; i < 3; i++ { for j := 0; j < 2; j++ { fmt.Println(i, j) } } correctly nests the inner for loop inside the outer loop with braces and increments.Step 2: Identify syntax errors in other options
for i := 0; i < 3; i++ { for j < 2 { fmt.Println(i, j); j++ } } uses a while-style loop without declaring j, causing an undefined variable error in Go. for i := 0; i < 3; i++; for j := 0; j < 2; j++ { fmt.Println(i, j) } has two for loops separated by a semicolon, which is invalid. for i := 0; i < 3; i++ { for j := 0; j < 2; j++ } fmt.Println(i, j) places the print statement outside the inner loop braces, causing scope issues.Final Answer:
for i := 0; i < 3; i++ { for j := 0; j < 2; j++ { fmt.Println(i, j) } } -> Option DQuick Check:
Correct nested loop syntax = for i := 0; i < 3; i++ { for j := 0; j < 2; j++ { fmt.Println(i, j) } } [OK]
- Using semicolon between two for loops instead of nesting
- Trying while-style loops without proper syntax
- Placing code outside loop braces incorrectly
package main
import "fmt"
func main() {
for i := 1; i <= 2; i++ {
for j := 1; j <= 3; j++ {
fmt.Print(i * j, " ")
}
fmt.Println()
}
}Solution
Step 1: Analyze outer loop iterations
The outer loop runs for i = 1 and i = 2.Step 2: Calculate inner loop outputs for each i
For i=1, inner loop prints 1*1=1, 1*2=2, 1*3=3. For i=2, inner loop prints 2*1=2, 2*2=4, 2*3=6.Final Answer:
1 2 3 2 4 6 -> Option CQuick Check:
Multiplying i and j in nested loops = 1 2 3 2 4 6 [OK]
- Confusing loop ranges or order
- Printing all numbers in one line without newline
- Mixing up i and j in multiplication
for i := 0; i < 3; i++ {
for j := 0; j < 2; j++
fmt.Println(i, j)
}Solution
Step 1: Check inner loop syntax
The inner loop lacks braces {} around its body, which is required for multiple statements or to clearly define the loop block in Go.Step 2: Understand Go syntax rules
Without braces, only the next statement is considered inside the loop. Here, fmt.Println is intended as the loop body but braces improve clarity and prevent errors.Final Answer:
Missing braces {} for inner loop body -> Option AQuick Check:
Braces needed for loop body in Go [OK]
- Assuming braces are optional for loops
- Thinking variable declaration is missing
- Believing fmt.Println can't be inside loops
Solution
Step 1: Identify correct loop ranges
To print from 1 to 4, loops must run from 1 to 4 inclusive, so conditions use <= 4.Step 2: Check output format and calculation
for i := 1; i <= 4; i++ { for j := 1; j <= 4; j++ { fmt.Printf("%d ", i*j) } fmt.Println() } multiplies i and j and prints in one line with spaces, then prints a newline after inner loop, forming a table.Step 3: Compare other options
for i := 1; i < 4; i++ { for j := 1; j < 4; j++ { fmt.Println(i*j) } } uses < 4, missing 4. Options C and D add i+j instead of multiplication, which is incorrect for multiplication table.Final Answer:
for i := 1; i <= 4; i++ { for j := 1; j <= 4; j++ { fmt.Printf("%d ", i*j) } fmt.Println() } -> Option BQuick Check:
Correct ranges and multiplication print = for i := 1; i <= 4; i++ { for j := 1; j <= 4; j++ { fmt.Printf("%d ", i*j) } fmt.Println() } [OK]
- Using < instead of <= to miss last number
- Adding instead of multiplying counters
- Printing each number on a new line instead of a table
Ready to prove it?
Pass the test and this pattern moves unknown
