range in Go

The range keyword is used in for loop to iterate over items of an array, slice, channel or map. With array and slices, it returns the index of the item as integer. With maps, it returns the key of the next key-value pair. 
Range either returns one value or two. If only one value is used on the left of a range expression, it is the 1st value.
You can skip the index or value by assigning to _.
If you only want the index, you can omit the second variable
```
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}

func main() {
	for i, v := range pow {
		fmt.Printf("2**%d = %d\n", i, v)
	}
}
```