75 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Loops
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# For loop in Go
							 | 
						||
| 
								 | 
							
								Go has only `for` loop. The basic `for` loop has three components separated by `;` -
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  * the **init** statement: executed before the first iteration
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  * the **condition** expression: evaluated before every iteration
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  * the **post** statement: executed at the end of every iteration
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The **init** statement is often a short variable declaration. The variables declared there are visible only in the scope of the `for` statement. The loop stops iterating once the boolean condition evaluates to false.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								An example of the `for` loop is given below -
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**for.go**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```go
							 | 
						||
| 
								 | 
							
								package main
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import "fmt"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func main() {
							 | 
						||
| 
								 | 
							
									sum := 0
							 | 
						||
| 
								 | 
							
									for i := 0; i <= 10; i++ {
							 | 
						||
| 
								 | 
							
										sum += i
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									fmt.Println("The sum of first 10 natural numbers is", sum)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								Running the above program produces an output similar to the following output -
							 | 
						||
| 
								 | 
							
								```    
							 | 
						||
| 
								 | 
							
								$ go run for.go
							 | 
						||
| 
								 | 
							
								The sum of first 10 natural numbers is 55
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								You can use `continue` and `break` to adjust the loops flow
							 | 
						||
| 
								 | 
							
								```go
							 | 
						||
| 
								 | 
							
								  // this code prints any odd numbers up to 5
							 | 
						||
| 
								 | 
							
								  for n := 0; n <= 10; n++ {
							 | 
						||
| 
								 | 
							
								    if n % 2 == 0 {
							 | 
						||
| 
								 | 
							
								      // if the number is even jump to the next n
							 | 
						||
| 
								 | 
							
								      continue
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    fmt.Println(n)
							 | 
						||
| 
								 | 
							
								    // if the number is 5 exit the loop
							 | 
						||
| 
								 | 
							
								    if n == 5 {
							 | 
						||
| 
								 | 
							
								      break
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								If you want to create an infinite loop just use `for { }`
							 | 
						||
| 
								 | 
							
								```go
							 | 
						||
| 
								 | 
							
								  for {
							 | 
						||
| 
								 | 
							
								    // Whill loop until a condition breaks the loop
							 | 
						||
| 
								 | 
							
								    break // exit the loop
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Replacement for while-loop
							 | 
						||
| 
								 | 
							
								To simulate while-loop of other languages, you can simply exclude the **init** and **post** statement:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```go
							 | 
						||
| 
								 | 
							
								func main() {
							 | 
						||
| 
								 | 
							
									num := 1
							 | 
						||
| 
								 | 
							
									for num <= 1000 {
							 | 
						||
| 
								 | 
							
										num *= 2
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									fmt.Println("The smallest power of 2 above 1000 is", num)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 |