For Range

range iterates over elements in a variety of data structures. Let’s see how to use range with some of the data structures we’ve already learned.

Here we use range to sum the numbers in a slice. Arrays work like this too.

nums := [2, 3, 4] sum := 0 for _, num := range nums { sum += num } println "sum:", sum

range on arrays and slices provides both the index and value for each entry. Above we didn’t need the index, so we ignored it with the blank identifier _. Sometimes we actually want the indexes though.

for i, num := range nums { if num == 3 { println "index:", i } }

range on map iterates over key/value pairs.

kvs := {"a": "apple", "b": "banana"} for k, v := range kvs { printf "%s -> %s\n", k, v }

range can also iterate over just the keys of a map.

for k := range kvs { println "key:", k }

range on strings iterates over Unicode code points. The first value is the starting byte index of the rune and the second the rune itself.

for i, c := range "go" { println i, c }

Next example: List Comprehension