🔁 Go Nested For Loop – Iterate Over Multi-Dimensional Data in Go (2025 Guide)
🧲 Introduction – What Are Nested For Loops in Go?
A nested for loop in Go means placing one for loop inside another. This is commonly used for multi-dimensional arrays, matrix traversal, nested iteration, or grid-based logic in CLI tools, games, or computations.
🎯 In this section, you’ll learn:
- How to write nested for loops in Go
- Iterate through 2D slices (matrices)
- Use control flow (
break,continue,labels) in nested loops - Best practices to avoid deep nesting pitfalls
✅ Basic Syntax – Go Nested For Loop
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
// inner loop block
}
}
🧪 Example – Simple Nested Loop
for i := 1; i <= 3; i++ {
for j := 1; j <= 2; j++ {
fmt.Printf("i=%d, j=%d\n", i, j)
}
}
📤 Output:
i=1, j=1
i=1, j=2
i=2, j=1
i=2, j=2
i=3, j=1
i=3, j=2
✅ The outer loop runs 3 times; for each outer iteration, the inner loop runs 2 times.
🧮 Example – 2D Slice (Matrix Traversal)
matrix := [][]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}
for i := 0; i < len(matrix); i++ {
for j := 0; j < len(matrix[i]); j++ {
fmt.Printf("%d ", matrix[i][j])
}
fmt.Println()
}
📤 Output:
1 2 3
4 5 6
7 8 9
🔁 Nested range Loop Over 2D Slice
for i, row := range matrix {
for j, val := range row {
fmt.Printf("matrix[%d][%d] = %d\n", i, j, val)
}
}
📤 Output:
matrix[0][0] = 1
matrix[0][1] = 2
matrix[0][2] = 3
matrix[1][0] = 4
matrix[1][1] = 5
matrix[1][2] = 6
matrix[2][0] = 7
matrix[2][1] = 8
matrix[2][2] = 9
✅ Using range is cleaner and safer when iterating over slices or arrays.
🏷️ Using Labels with Nested Loops
Break out of both loops using a label:
Outer:
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
if i*j > 4 {
break Outer
}
fmt.Println(i, j)
}
}
📤 Output:
1 1
1 2
1 3
2 1
✅ As soon as i*j > 4, the program exits both loops.
⚠️ Common Mistakes to Avoid
| Mistake | Fix |
|---|---|
| Forgetting inner loop reset logic | Ensure correct counter initialization |
| Infinite loop from wrong condition | Check both loop conditions carefully |
| Too deep nesting | Refactor into helper functions |
🧠 Best Practices
- ✅ Use
rangefor collections to simplify loop logic - ✅ Name labels meaningfully for readability (
Outer,Exit) - 🚫 Avoid nesting more than 2–3 levels—extract logic into functions
- ✅ Use blank identifiers (
_) when loop variables aren’t used
📌 Summary – Recap & Next Steps
Nested for loops are essential for handling multi-dimensional data or cross-iteration logic in Go. Whether you’re working with matrices, combinations, or nested tasks, Go offers clean syntax and safe control mechanisms.
🔍 Key Takeaways:
- Nest
forloops to handle multi-dimensional structures - Use
rangefor readable and idiomatic iteration - Use
break,continue, andlabelsto control complex loops - Avoid excessive nesting—refactor when possible
⚙️ Next: Learn about Go Functions to encapsulate logic and make nested operations reusable.
❓ FAQs – Go Nested For Loop
❓ Can I use range inside a nested for loop?
✅ Yes. You can use nested range loops to iterate over 2D slices or maps.
❓ How do I break out of both loops at once?
✅ Use a labeled break, e.g., break Outer.
❓ Is it okay to nest more than 2 loops?
✅ It’s possible, but not recommended. Consider breaking logic into smaller functions for clarity.
❓ Can I use continue in a nested loop?
✅ Yes. continue applies to the current loop it’s in. Use labels if needed to skip outer loops.
❓ Are nested loops slow in Go?
✅ Not inherently. But performance depends on the volume of iterations and algorithm efficiency.
Share Now :
