Go Loops – for, range, nested loops, break & continue explained
Introduction – Why Loops Are Crucial in Go
Loops help you execute code repeatedly—a fundamental need in any language. Go simplifies looping with just one keyword: for. Whether you’re iterating over arrays, creating nested loops, or controlling flow with break and continue, Go’s approach is powerful and concise.
In this guide, you’ll learn:
- How to write different
forloop formats - How to use
rangeto iterate over arrays, slices, maps, and strings - Nested loops for multi-dimensional data
- How
break,continue, andgotocontrol loop execution
Topics Covered
| Loop Type / Keyword | Description |
|---|---|
| Go For Loop | Traditional loop using initializer, condition, and increment |
| Go Nested For Loop | Loop within a loop for multi-dimensional iteration |
| Go Range Loop | Iterate over collections like arrays, slices, maps, or strings |
| Go Break / Continue / Goto | Keywords to control loop execution manually |
Go – For Loop (Classic)
package main
import "fmt"
func main() {
for i := 1; i <= 5; i++ {
fmt.Println("i =", i)
}
}
Parts of a for loop:
- Initialization:
i := 1 - Condition:
i <= 5 - Post-statement:
i++
All three parts are optional:
i := 0
for i < 5 {
fmt.Println(i)
i++
}
Go – Nested For Loop
package main
import "fmt"
func main() {
for i := 1; i <= 3; i++ {
for j := 1; j <= 2; j++ {
fmt.Printf("i=%d, j=%d\n", i, j)
}
}
}
Useful for:
- Working with 2D arrays or matrix structures
- Building combinations or permutations
Go – Range Loop
range lets you iterate over arrays, slices, maps, and strings:
nums := []int{10, 20, 30}
for index, value := range nums {
fmt.Printf("Index: %d, Value: %d\n", index, value)
}
Skip index or value:
for _, v := range nums {
fmt.Println(v)
}
With strings:
for i, ch := range "Go" {
fmt.Printf("Index: %d, Char: %c\n", i, ch)
}
Go – Break, Continue, and Goto
break: Exit the loop
for i := 1; i <= 10; i++ {
if i == 5 {
break
}
fmt.Println(i)
}
continue: Skip current iteration
for i := 1; i <= 5; i++ {
if i == 3 {
continue
}
fmt.Println(i)
}
goto: Jump to labeled line (use with caution)
i := 1
for {
if i > 3 {
goto end
}
fmt.Println(i)
i++
}
end:
fmt.Println("Exited loop using goto")
Best avoided unless absolutely necessary (e.g., breaking deeply nested logic).
Summary – Recap & Next Steps
Go offers a flexible and simplified looping system using just for. From traditional loops to advanced iterations over collections, Go enables efficient iteration with minimal syntax.
Key Takeaways:
foris the only loop keyword in Go- Use
rangefor easy collection iteration - Combine loops with conditions and logic for complex behavior
- Use
breakto exit,continueto skip, andgotofor explicit jumps
Real-World Use Cases:
- Processing JSON arrays
- Reading files line by line
- Looping through API responses or user input
Frequently Asked Questions
Is while supported in Go?
No. Use for condition instead:
for x < 10 {
// same as while
}
How do I loop infinitely in Go?
Use:
for {
// infinite loop
}
What’s the benefit of range in Go?
It allows concise and safe iteration over arrays, slices, maps, strings, and channels.
Can I label loops in Go?
Yes. Labels are used with break or goto:
Outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if j == 1 {
break Outer
}
}
}
Can I use continue with range?
Yes. It works the same way:
for _, v := range values {
if v == 0 {
continue
}
fmt.Println(v)
}
Share Now :
