Table of Contents
- Introduction
- Prerequisites
- Setup
- Basic For Loop
- Iterating over Arrays and Slices
- Iterating over Maps
- Skipping Iteration with Continue
- Breaking out of a Loop with Break
- Nested For Loops
- Conclusion
Introduction
Welcome to this tutorial on iterating with Go! In this tutorial, we will explore the concept of for loops in Go programming language. By the end of this tutorial, you will have a deep understanding of how to use for loops to iterate over different data structures in your Go programs.
Prerequisites
To follow along with this tutorial, you should have a basic understanding of Go syntax and programming concepts. Familiarity with variables, arrays, slices, and maps will be beneficial.
Setup
Before we begin, please ensure that you have Go installed on your machine. You can download and install the latest version of Go from the official Go website at golang.org.
Basic For Loop
Let’s start with the basic syntax of a for loop in Go:
for initialization; condition; post {
// loop body
}
-
initialization
: This part is optional and is used to initialize loop variables. It is executed before the first iteration of the loop. -
condition
: This part is evaluated before each iteration of the loop. If the condition is true, the loop continues; otherwise, it terminates. -
post
: This part is optional and is executed after each iteration of the loop.
The loop body contains the code that will be repeatedly executed as long as the condition is true.
Here’s an example that prints the numbers from 1 to 5 using a basic for loop:
for i := 1; i <= 5; i++ {
fmt.Println(i)
}
The output of the above code will be:
1
2
3
4
5
Iterating over Arrays and Slices
Go provides a convenient way to iterate over arrays and slices using for loops. Let’s see how we can iterate over an array of strings:
fruits := [3]string{"apple", "banana", "cherry"}
for index, value := range fruits {
fmt.Printf("Index: %d, Value: %s\n", index, value)
}
Output:
Index: 0, Value: apple
Index: 1, Value: banana
Index: 2, Value: cherry
In the above code, we use the range
keyword to iterate over the fruits
array. The range
keyword returns both the index and the value at that index for each iteration. We can use these values within the loop body as needed.
Similarly, we can iterate over a slice using a for loop:
colors := []string{"red", "green", "blue"}
for index, value := range colors {
fmt.Printf("Index: %d, Value: %s\n", index, value)
}
Output:
Index: 0, Value: red
Index: 1, Value: green
Index: 2, Value: blue
Iterating over Maps
Iterating over a map in Go is slightly different compared to arrays and slices. Since maps are unordered collections, we don’t have direct access to the index. Instead, we get the key-value pair during each iteration. Here’s an example:
population := map[string]int{
"India": 1366000000,
"China": 1444216107,
"USA": 331002651,
}
for key, value := range population {
fmt.Printf("Country: %s, Population: %d\n", key, value)
}
Output:
Country: India, Population: 1366000000
Country: China, Population: 1444216107
Country: USA, Population: 331002651
In the above code, we use the range
keyword to iterate over the population
map. During each iteration, key
contains the map key, and value
contains the corresponding value.
Skipping Iteration with Continue
Sometimes, we might want to skip certain iterations based on a condition. We can achieve this using the continue
statement. Let’s see an example:
for i := 1; i <= 5; i++ {
if i%2 == 0 {
continue
}
fmt.Println(i)
}
Output:
1
3
5
In the above code, we skip the even numbers using the continue
statement. This way, only the odd numbers are printed.
Breaking out of a Loop with Break
The break
statement allows us to terminate the loop prematurely. Let’s say we want to print numbers until we encounter a specific condition. We can use the break
statement to exit the loop. Here’s an example:
for i := 1; i <= 10; i++ {
if i == 5 {
break
}
fmt.Println(i)
}
Output:
1
2
3
4
In the above code, the loop terminates when i
becomes equal to 5. Therefore, only the numbers from 1 to 4 are printed.
Nested For Loops
Go allows us to have nested for loops, where one loop is inside another. This is useful when working with multidimensional arrays or performing complex iterations. Let’s see an example that prints a pattern using nested for loops:
for i := 1; i <= 5; i++ {
for j := 1; j <= i; j++ {
fmt.Print("* ")
}
fmt.Println()
}
Output:
*
* *
* * *
* * * *
* * * * *
In the above code, the outer loop controls the number of rows, and the inner loop controls the number of columns (*
) to be printed.
Conclusion
In this tutorial, we explored the concept of for loops in Go. We learned how to use for loops to iterate over arrays, slices, and maps. We also saw how to skip iterations using the continue
statement and terminate the loop prematurely using the break
statement. Additionally, we discovered how to work with nested for loops for more complex iterations.
By understanding the power and flexibility of for loops, you can efficiently handle repetitive tasks and manipulate data structures in your Go programs. Experiment with different types of iterations and explore the possibilities to make your code more concise and effective.
Happy coding!