62 lines
		
	
	
		
			978 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			978 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Range
 | |
| ---
 | |
| ## Range
 | |
| 
 | |
| To iterate over a collection in Go, we can use the range.
 | |
| 
 | |
| Range differs from for-loops as the item in a collection is not accessed by an index. 
 | |
| 
 | |
| If you want to access a specifc element in a collection, a for-loop is probably the better options. 
 | |
| 
 | |
| Here is an example:
 | |
| 
 | |
| ```go
 | |
| package main
 | |
| 
 | |
| import "fmt"
 | |
| 
 | |
| func main() {
 | |
|   fruits := []string{"apple", "orange", "pear"}
 | |
|   
 | |
|   for _, fruit := range fruits {
 | |
|     fmt.Println(fruit)
 | |
|    }
 | |
| }
 | |
| ```
 | |
| 
 | |
| Will output:
 | |
| 
 | |
| ````
 | |
| apple
 | |
| orange
 | |
| pear
 | |
| ````
 | |
| 
 | |
| You might have noticed the blank identifer that was used. 
 | |
| 
 | |
| The blank identifer (or the first variable returned from range) is the index of the item. 
 | |
| 
 | |
| This is best suited when ranging over a map, so you can get the key and value:
 | |
| 
 | |
| ```go
 | |
| package main
 | |
| 
 | |
| import "fmt"
 | |
| 
 | |
| func main() {
 | |
|     kvs := map[string]string{"a": "apple", "b": "banana"}
 | |
|     for k, v := range kvs {
 | |
|         fmt.Printf("%s -> %s\n", k, v)
 | |
|     
 | |
|    }
 | |
| }
 | |
| ```go
 | |
| 
 | |
| Outputs:
 | |
| 
 | |
| ````
 | |
| a -> apple
 | |
| b -> banana
 | |
| ````
 |