In C++, we have three methods to iterate statements; they are for, foreach, and while. Fortunately, there is only one method in Golang to loop lines of code; it’s for method. However, this for method in Golang can be used as for, foreach, and while in C++.
For loop
Siilar to C++, basic Golang for loop has three components separated by semicolons: ìnitial statement, condition expression, and post statement. The difference is, unlike for loop in C++, we don’t need to add parenthesis in between these three comment. Please see the following code that will print number 0 to 9:
for i := 0; i < 10; i++ {
    fmt.Println(i)
}
The initial statement and post statement are optional, so we can refactor the preceding code as follow:
i := 0
for ; i < 10; {
    fmt.Println(i)
    i++ 
}
As the preceding code, we move the initial statement outside for loop and post statement inside for loop.
Note: If we omit the post statement from the preceding code, it will run infinitely.
While loop
We can refactor preceding code by droping semicolons so the code will be as follow:
i := 0
for i < 10 {
    fmt.Println(i)
    i++ 
}
The preceding code is similar to the use of while loop in C++.
Foreach
Another for loop in Golang is iteration over slice or map. It’s similar to foreach loop in C++. To do so, we use range form of for loop.
Two values will be returned for each iteration when we apply the for - range loop. The first is the index, and the second is a copy of the element at that index.
The following code will apply the for - range loop to print the pow slice value:
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
for i, v := range pow {
    fmt.Printf("2**%d = %d\n", i, v)
}
Source links:
A Tour of Go - Flow control
A Tour of Go - Range