range是一个内置函数。可以遍历数组、切片slice、字典map。
当遍历数组和切片的时候,返回的是索引和元素。
当遍历字典的时候,返回字典的键和值。
//range遍历切片的所有元素,并求和
fibo := []int{2,3,5,8,13,34,55}
sum := 0
for index, num := range fibo {
sum += num
fmt.Println(index, num, sum)
}
fmt.Println("sum:", sum)
如果你不需要 range 返回的某个值,比如 index,你可以把它写成 _ ,这个就可以忽略这个返回值了。
//range遍历切片的所有元素,并求和
fibo := []int{2,3,5,8,13,34,55}
sum := 0
for _, num := range fibo {
sum += num
fmt.Println(num, sum)
}
fmt.Println("sum:", sum)
range还可以遍历字符串
//range遍历字符串,返回字符索引和Unicode编码。
for i, c := range "go"{
fmt.Printf("%d, %c\n", i, c)
}
map 字典也是可以使用 range 遍历的
//range遍历字典,返回键值对。
kvs := map[string]string{"a":"apple", "b":"banana", "c":"cofox"}
for k, v := range kvs {
fmt.Printf("%s -> %s\n", k, v)
}
还是把完整代码拿出来看一下吧。
package main
import (
"fmt"
)
func main() {
//range遍历切片的所有元素,并求和
fibo := []int{2,3,5,8,13,34,55}
sum := 0
for _, num := range fibo {
sum += num
fmt.Println(num, sum)
}
fmt.Println("sum:", sum)
//range遍历字符串,返回字符索引和Unicode编码。
for i, c := range "go"{
fmt.Printf("%d, %c\n", i, c)
}
//range遍历字典,返回键值对。
kvs := map[string]string{"a":"apple", "b":"banana", "c":"cofox"}
for k, v := range kvs {
fmt.Printf("%s -> %s\n", k, v)
}
}
运行结果如下
2 2
3 5
5 10
8 18
13 31
34 65
55 120
sum: 120
0, g
1, o
a -> apple
b -> banana
c -> cofox