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) | ||
|  | } | ||
|  | ``` |