In Go, the for loop is the only looping construct provided by the language. It’s versatile and efficient for executing a block of code multiple times, often with a unique value in each iteration. Each cycle through the loop is referred to as an iteration.
Syntax of a for Loop
The for loop in Go can include up to three statements:
for initialization; condition; increment {
// code to execute during each iteration
}
- Initialization: This sets up the loop control variable.
- Condition: This evaluates before each iteration. If
TRUE, the loop continues; ifFALSE, the loop ends. - Increment: This modifies the loop control variable after each iteration.
Note: These statements don’t need to be included within the loop header but must exist elsewhere in the code.
Example 1: Counting from 0 to 4
package main
import ("fmt")
func main() {
for bikes := 0; bikes < 5; bikes++ {
fmt.Println(bikes)
}
}
Output:
0 1 2 3 4
Explanation:
- Initialization:
bikes := 0sets the starting value to 0. - Condition:
bikes < 5ensures the loop runs as long asbikesis less than 5. - Increment:
bikes++increases the value ofbikesby 1 in each iteration.
Example 2: Counting in Tens
package main
import ("fmt")
func main() {
for motorcycles := 0; motorcycles <= 100; motorcycles += 10 {
fmt.Println(motorcycles)
}
}
Output:
0 10 20 30 40 50 60 70 80 90 100
Explanation:
- Initialization:
motorcycles := 0starts at 0. - Condition:
motorcycles <= 100keeps the loop running whilemotorcyclesis less than or equal to 100. - Increment:
motorcycles += 10increases the value by 10 with each cycle.
Continue Statement
The continue statement skips the remainder of the current loop iteration and proceeds to the next iteration.
Example: Skipping a specific value (e.g., 3):
package main
import ("fmt")
func main() {
for models := 0; models < 5; models++ {
if models == 3 {
continue
}
fmt.Println(models)
}
}
Output:
0 1 2 4
Break Statement
The break statement halts the loop’s execution entirely.
Example: Terminating the loop when a condition is met:
package main
import ("fmt")
func main() {
for brands := 0; brands < 5; brands++ {
if brands == 3 {
break
}
fmt.Println(brands)
}
}
Output:
0 1 2
Nested Loops
Loops can be nested, meaning one loop is placed inside another. The inner loop runs completely during each iteration of the outer loop.
Example: Combining two lists, such as adjectives and motorcycle brands:
package main
import ("fmt")
func main() {
adjectives := [2]string{"sleek", "powerful"}
brands := [3]string{"Ducati", "Yamaha", "Honda"}
for i := 0; i < len(adjectives); i++ {
for j := 0; j < len(brands); j++ {
fmt.Println(adjectives[i], brands[j])
}
}
}
Output:
sleek Ducati sleek Yamaha sleek Honda powerful Ducati powerful Yamaha powerful Honda
Using the range Keyword
The range keyword provides a convenient way to iterate over elements in arrays, slices, or maps. It returns both the index and the value.
Syntax:
for index, value := range collection {
// code to execute during each iteration
}
Example: Iterating through motorcycle brands:
package main
import ("fmt")
func main() {
brands := [3]string{"Suzuki", "Honda", "Ducati"}
for idx, val := range brands {
fmt.Printf("%v\t%v\n", idx, val)
}
}
Output:
0 Suzuki 1 Honda 2 Ducati
Additional Tips for range
- To ignore the index:
for _, val := range brands { fmt.Println(val) }Output:Suzuki Honda Ducati - To ignore the value:
for idx, _ := range brands { fmt.Println(idx) }Output:0 1 2


