Golang : For loop continue,break and range
Feeling like writing about FOR loop today so....this tutorial will explore how Golang's FOR loop works.
For loop is a block of code that repeats itself with increase/decrease or changes in input variables until certain condition is met. In the simplest form a for loop looks like this :
package main
import "fmt"
func main() {
// initialize i to 0
// check each time if i is less than 10
// the increase the value of i by 1 for each loop after the first
for i := 0; i < 10; i++ {
fmt.Printf("i is %d\n", i)
}
}
Output :
i is 0
i is 1
i is 2
i is 3
i is 4
i is 5
i is 6
i is 7
i is 8
i is 9
Another example but with string value instead of integer
package main
import "fmt"
func main() {
s := "" // initialize s to empty string
for s != "eeeee" { // if s is not 5 e
fmt.Printf("s is %s\n", s)
s = s + "e" // add e to s (string value!) and repeat
}
}
Output :
s is
s is e
s is ee
s is eee
s is eeee
Just in case you have multiple counters to take into account for your FOR loop. No problem. See this example
package main
import "fmt"
func main() {
// multiple counters initialization
// combine each conditions with &&(and) and ||(or) to form the final boolean condition
// incrementation of the multiple counters
for i, j, s := 0, 5, "e"; i < 10 && j < 100 && s != "eeeee"; i, j, s = i+1, j+1, s+"e" {
fmt.Println("Value of i, j, s:", i, j, s)
}
}
break keyword :
Basically break will stop the for loop entirely once a condition is met.
To break the for loop, see this code fragment. (taken from Read until certain condition is met tutorial )
var userInput []string
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
line := scanner.Text()
if line == "." {
break // to stop writing enter . (period) and press enter
}
userInput = append(userInput, line+"\n")
}
continue keyword
continue is the opposite of break keyword, basically what it allows you to do is to skip when a condition is met and continue with the for loop again.
this code example demonstrate how the continue keyword works in a for loop
package main
import "fmt"
func main() {
for i := 0; i < 9; i++ {
if i%2 == 0 {
continue //skip this part and go back to beginning of for loop
}
fmt.Println("The odd number you are looking for :", i)
}
}
range keyword :
range allows you to iterate each key/value in an array, slice or map. If used against a map, range will return 2 values - the index(key) and the related values. See example below :
package main
import (
"fmt"
)
func main() {
niceplacestovisit := []string{"Paris", "Kyoto", "Bali", "New York"}
i := 1
for cityname := range niceplacestovisit {
fmt.Printf("[%d] city name is %s\n", i, niceplacestovisit[cityname])
i++
}
fmt.Println("------------------------")
// range also return 2 values
// 1st the index or key
// 2nd the value
niceplacestovisit2 := map[string]string{"1":"Paris", "2":"Kyoto", "3":"Bali", "4":"New York"}
for cityname2, value := range niceplacestovisit2 {
fmt.Printf("[%s] city name is %s\n", cityname2, value)
}
// starting from Go 1.4
// it is ok to iterate without specifying the values
for range niceplacestovisit2 {
fmt.Println("Many cities iterated over niceplacestovisit2 array")
}
}
Output :
1 city name is Paris
[2] city name is Kyoto
[3] city name is Bali
[4] city name is New York
1 city name is Paris
[2] city name is Kyoto
[3] city name is Bali
[4] city name is New York
Many cities iterated over niceplacestovisit2 array
Many cities iterated over niceplacestovisit2 array
Many cities iterated over niceplacestovisit2 array
Many cities iterated over niceplacestovisit2 array
Hope this tutorial be useful to you in learning Golang.
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+20.3k Golang : Pipe output from one os.Exec(shell command) to another command
+21k Golang : Convert(cast) string to rune and back to string example
+12.4k Golang : Exit, terminating or aborting a program
+7.8k Javascript : Put image into Chrome browser's console
+17.5k Golang : Defer function inside init()
+15.8k Golang : Read a file line by line
+12.2k Golang : Display list of countries and ISO codes
+18.4k Golang : Send email with attachment
+7.7k Golang : Ways to recover memory during run time.
+16.7k Golang : Get the IPv4 and IPv6 addresses for a specific network interface
+4.9k Swift : Convert (cast) Float to Int or Int32 value
+7.4k Golang : How to stop user from directly running an executable file?